课后作业16讲,sum求和
a = input("请输入数组:")a = list(a)
b = 0
for each in a:
if each.isdigit()==True:
b += each
else:
break
print(b)
这是我写的,总是没法计算出结果。说不支持int和str的求和。但是我输入的也没有str啊。
此外,如果我用type(each)去判断,因为each已经是列表,所以无法求出结果。这个不能用列表么? each 是列表 a 里的元素,就是 str 类型。 简单的说,可以把b += each改为b += int(each)
但是a = list(a)还是有问题,可以改为a = a.split(),这样输入数据时用空格分隔就可以了。 b += str(each)强制转换成字符串 冬雪雪冬 发表于 2018-1-5 16:03
简单的说,可以把b += each改为b += int(each)
但是a = list(a)还是有问题,可以改为a = a.split(),这样 ...
不对,这样更改了,运行结果是将数字连起来,不是求和 像番茄加两个蛋 发表于 2018-1-5 19:21
b += str(each)强制转换成字符串
更改了报错
TypeError: unsupported operand type(s) for +=: 'int' and 'str' a = input("请输入数组:")
a = list(a)
b = 0
for each in a:
if each.isdigit()==True:
b += each
else:
break
print(b)
看你上面代码,b += each each要加个int()转换成整型。
这样代码,在输入纯数字的时,就可以求和了,但一旦以字母开头或者数字和字母混合出现,会无法获得正确的值。
原因:
你下面添加了else:break,在迭代进行的时候,一旦出现字母了,会跳出for循环,所以会出现问题。
将else:break 去掉就好了。
修改后:
a = input("请输入数组:")
a = list(a)# 这里也可以去掉,没必要非得转换成列表进行切片,直接字符串也可以切片操作哈。。
b = 0
changdu = len(a)
while (changdu == 0):
a = input('请重新输入数组:')
changdu =len(a)
for each in a:
if each.isdigit():
b += int(each)
print(b)
页:
[1]