鱼C论坛

 找回密码
 立即注册
查看: 6918|回复: 35

[技术交流] Python:每日一题86(答题领鱼币)

[复制链接]
发表于 2017-8-26 08:01:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:
这次很简单,希望大家踊跃参加。
一个列表,其中的元素可以是数值(整数、浮点数),也可以是字符串,要求计算各个元素之和,字符串以其长度参与计算,例如'abc',长度为3,就将3加入总和中。
def sum1(list1):
    ......
>>> sum1([1.2,2, 'swew23'])
9.2
>>> sum1([1.2,2])
3.2
>>> sum1([1,2])
3
>>> sum1(['12321','asdewdew'])
13

我的解法,供参考。
游客,如果您要查看本帖隐藏内容请回复

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-26 09:12:14 From FishC Mobile | 显示全部楼层
def sum1(list1):
      result =0
      for item in list1:
            if  isinstance(item,list1):
                   number =len(item)
            else:
                   number=item
            result+=number
      return   result

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1 程序报错,再修改看看。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 09:27:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-26 09:48:39 | 显示全部楼层
本帖最后由 sunnychou 于 2017-8-26 09:50 编辑

a = [1.2,2, 'swew23','sdde']
def Sum(lis):
    b = []
    for i in a:
        if isinstance(i,(int,float)):
            b.append(i)
        else:
            b.append(len(i))
    return sum(b)
Sum(a)

TypeError: 'float' object is not callable
发现了出现了这样一个问题,然后觉得经常出现,查了一下,原来是之前有定义sum,You probably assigned some value to max before it.所以会返回这样的错误,不知道有没有人遇到

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 10:03:14 | 显示全部楼层
def sum1(list):
    sum = 0
    for i in list:
        if type(i) == str:
            sum += len(i)
        else:
            sum += i
    return sum

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 19:54:33 | 显示全部楼层
def sum1(list1):
   sum=0
   for i in list1:
      if(isinstance(i,str)):
              sum=sum+len(i)
      else:
              sum=sum+i
   return sum
print(sum1([1.2,2,'swew23']))

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 21:19:30 From FishC Mobile | 显示全部楼层
def sum1(list1):
    h=0.0
    for i in list1:
        if str(type(i))=="<class 'str'>":
            h+=len(i)
        else:
            h+=i
    return(h)
a=[1,1.3,"jkknvg"]
b=sum1(a)
print(b)



我就想问问  我的结果后面 那一长串000000007你们是怎么解决的

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 21:25:37 | 显示全部楼层
本帖最后由 pythonlaser 于 2017-8-26 21:26 编辑
def sm(*args):
    typelist = [str,int,float]
    res=0
    for each in args:
        if type(each) in typelist:
            if isinstance(each,str):
                res+=len(each)
            else:
                res+=each
        else:
            raise TypeError('输入类型错误')
    print(res)    
            
sm(12,'asd',2.123)    #17.123

PS:我没看清题目,我这个是随意输入,不是输入一个列表

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-27 09:37:45 | 显示全部楼层
def sum1(list1):
    sum = 0
    sum2 = 0
    sum3 =0
    for i in list1:
        if type(i) == str:
            sum2 += len(i)
        else:
            sum3 += i
        sum = sum2 + sum3
    return sum


print(sum1([1.2,2, 'swew23']))

print(sum1([1.2,2]))

print(sum1([1,2]))

print(sum1(['12321','asdewdew']))

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-27 17:05:13 | 显示全部楼层
def sum1(list1):
    s = 0
    for each in list1:
        s += len(each) if isinstance(each,str) else each
    return s

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-27 22:56:16 | 显示全部楼层
def sum1(list):
    sum = 0
    for i in list:
        if type(i) == str:
            sum += len(i)
        else:
            sum += i
    return sum

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-28 09:23:09 | 显示全部楼层
def sum1(list1):
    total = 0
    for i in list1:
        if type(i) == str:
            total += len(i)
        elif type(i) in [int, float]:
            total += i
        else:
            return None
    return total

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-28 14:10:41 | 显示全部楼层
def sum1(list1):
    mysub=0
    for i in list1:
        mysub+=i if isinstance(i, int) or isinstance(i, float) else len(i)
    return mysub

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-28 19:10:08 | 显示全部楼层
def sum1(list):
    sum = 0
    for i in list:
        if type(i) == str:
            sum += len(i)
        else:
            sum += i
    return sum

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-28 19:42:02 | 显示全部楼层
本帖最后由 wwb_coco 于 2017-8-28 19:44 编辑

def sum1(list1):
        sum1 = 0
        for item in list1:
               if isinstance(item, (int,float)):
                       sum1 +=item
               else:
                        sum1 += len(item)
        return sum1

print(sum1([1.2,2, 'swew23']))
print(sum1([1.2,2]))
print(sum1([1,2]))
print(sum1(['12321','asdewdew']))

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-28 21:09:31 | 显示全部楼层
用 map 过一遍
def sum1(list1):
    return sum(map(lambda x: len(x) if isinstance(x,str) else x, list1))

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-8-28 22:23:30 | 显示全部楼层

a = [1.2,2, 'swew23','sdde']
def Sum(lis):
    b = []
    for i in a:
        if isinstance(i,(int,float)):
            b.append(i)
        else:
            b.append(len(i))
    return sum(b)
Sum(a)

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-28 22:27:05 | 显示全部楼层

还可以这样用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-29 16:13:54 | 显示全部楼层
# -*- coding:utf8 -*-
# /usr/bin/en python
def sum1(list1):
        list2=[]
        for i in list1:
                try:
                        i/2
                        list2.append(i)
                except:
                        list2.append(len(i))
        return sum(list2)
list1=[1.342,4,36,'2314',[2,3,4,5],{'tom':'175','lily':'160'}]
print sum1(list1)

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-29 16:29:19 | 显示全部楼层
import types
def deal_list(l):
    sum = 0.0
    for i in l:
        if type(i) is types.StringType:
            sum = sum + len(i)
        else:
            sum = sum + i
    return sum

l = [23,23.1,"23.1"]
a = deal_list(l)
print a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 02:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表