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))
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)) 不会起名字的我 发表于 2022-5-30 13:35
emmm补充一下哈, 如果y 直接用Int()转换了的话,那下面if (type(each)) == "float" 就不太有意义了,建议改成eval() 会比较好
因为 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))
y=input()
上面这个转化一下,就可以选择int或者float了:
t=eval(y)
然后你再调用t,你输入的类型是int返回就是int,输入float就是float
页:
[1]