鱼C论坛

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

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

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

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

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

x
题目:
这次很简单,希望大家踊跃参加。
一个列表,其中的元素可以是数值(整数、浮点数),也可以是字符串,要求计算各个元素之和,字符串以其长度参与计算,例如'abc',长度为3,就将3加入总和中。

  1. def sum1(list1):
  2.     ......
复制代码

  1. >>> sum1([1.2,2, 'swew23'])
  2. 9.2
  3. >>> sum1([1.2,2])
  4. 3.2
  5. >>> sum1([1,2])
  6. 3
  7. >>> sum1(['12321','asdewdew'])
  8. 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 编辑


  1. a = [1.2,2, 'swew23','sdde']
  2. def Sum(lis):
  3.     b = []
  4.     for i in a:
  5.         if isinstance(i,(int,float)):
  6.             b.append(i)
  7.         else:
  8.             b.append(len(i))
  9.     return sum(b)
  10. 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 | 显示全部楼层
  1. def sum1(list):
  2.     sum = 0
  3.     for i in list:
  4.         if type(i) == str:
  5.             sum += len(i)
  6.         else:
  7.             sum += i
  8.     return sum
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2017-8-26 19:54:33 | 显示全部楼层
  1. def sum1(list1):
  2.    sum=0
  3.    for i in list1:
  4.       if(isinstance(i,str)):
  5.               sum=sum+len(i)
  6.       else:
  7.               sum=sum+i
  8.    return sum
  9. 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 编辑
  1. def sm(*args):
  2.     typelist = [str,int,float]
  3.     res=0
  4.     for each in args:
  5.         if type(each) in typelist:
  6.             if isinstance(each,str):
  7.                 res+=len(each)
  8.             else:
  9.                 res+=each
  10.         else:
  11.             raise TypeError('输入类型错误')
  12.     print(res)   
  13.             
  14. 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 | 显示全部楼层
  1. def sum1(list1):
  2.     s = 0
  3.     for each in list1:
  4.         s += len(each) if isinstance(each,str) else each
  5.     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 | 显示全部楼层
  1. def sum1(list1):
  2.     total = 0
  3.     for i in list1:
  4.         if type(i) == str:
  5.             total += len(i)
  6.         elif type(i) in [int, float]:
  7.             total += i
  8.         else:
  9.             return None
  10.     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 过一遍
  1. def sum1(list1):
  2.     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 | 显示全部楼层
  1. # -*- coding:utf8 -*-
  2. # /usr/bin/en python
  3. def sum1(list1):
  4.         list2=[]
  5.         for i in list1:
  6.                 try:
  7.                         i/2
  8.                         list2.append(i)
  9.                 except:
  10.                         list2.append(len(i))
  11.         return sum(list2)
  12. list1=[1.342,4,36,'2314',[2,3,4,5],{'tom':'175','lily':'160'}]
  13. 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-4-19 19:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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