蔡怀建 发表于 2022-5-30 13:15:15

sum()函数遇到字符串时如何解决报错

本帖最后由 蔡怀建 于 2022-5-30 13:17 编辑

各位大神,我对第16讲课后习题动动手1的参考答案进行了改写,为什么输出值始终为0,求大神解答{:5_111:}


y=input()
   
def sum(x):
    result = 0
   
    for each in x:
      if (type(each) == int) or (type(each) == float):
            result += each
      else:
            continue

    return result

print(sum(y))

不会起名字的我 发表于 2022-5-30 13:35:56

y=int(input()) #强制转换为数字类型,若不是数字类型的字符串则报错
   
def sum(x):
    result = 0
   
    for each in x:
      if (type(each) == int) or (type(each) == float):
            result += each
      else:
            continue

    return result

print(sum(y))

Victor0321 发表于 2022-5-30 13:51:15

不会起名字的我 发表于 2022-5-30 13:35


emmm补充一下哈, 如果y 直接用Int()转换了的话,那下面if (type(each)) == "float" 就不太有意义了,建议改成eval() 会比较好

Twilight6 发表于 2022-5-30 15:01:24


因为 input 函数返回的是 字符串类型,所以导致你 type 进行判断时 ,永返回 str 导致 if 条件永不成立

这里甲鱼哥定义 sum 函数的 x 主要是接收容器类型数据,例如列表,而不是通过 input 进行传参,这里你将 y 改成一个含有多种元素的列表,即可正常执行代码

y=["100", 10, "FishC", 6.6]
   
def sum(x):
    result = 0
   
    for each in x:
      if (type(each) == int) or (type(each) == float):
            result += each
      else:
            continue

    return result

print(sum(y))

戴眼镜的胖子 发表于 2022-5-30 17:37:52

y=input()
上面这个转化一下,就可以选择int或者float了:
t=eval(y)
然后你再调用t,你输入的类型是int返回就是int,输入float就是float
页: [1]
查看完整版本: sum()函数遇到字符串时如何解决报错