[英]Python- using sum in for loop with an error
为什么我要这样写这个程序(第一种方式):
sum = 0
for i in range(1, 10):
if (i % 3 == 0) or (i % 5 == 0):
sum = sum + i
print(sum)
为什么我不能这样写?(第二种方式):
for i in range(1, 10):
if (i % 3 == 0) or (i % 5 == 0):
print(sum(i))
在第二种方式中,我收到此错误:
类型错误:“int”对象不可迭代
这个错误究竟是什么意思? 我可以在哪里使用 sum 函数? 哪里不行?
我必须列出清单才能使用 sum 函数吗?
非常感谢
正如文档所说,内置函数sum()
的第一个参数需要是可迭代的。
列表和元组是可迭代对象的例子。 int 不是可迭代的。
现在,在您的第一种方法中, sum
是您引入的一个变量,不幸的是它与内置函数同名。 通常应该避免这种情况(引入与标准函数或模块的名称冲突的用户定义名称)
在您的第二种方法中, sum
指的是该名称的内置函数,它期望一个可迭代的(例如,列表或元组)作为它的第一个参数,但您正在传递i
,它是一个int
对象
当你写sum=0
你已经覆盖了 python 函数sum()
。 因此,当您编写sum(1)
您会要求 python 计算0(1)
,这是不可能的,因为0
不可迭代
一般来说,不建议将sum
赋值给一个值
可以使用以下代码之一:
s=0
for i in range(1, 10):
if (i % 3 == 0) or (i % 5 == 0):
s+=1
print(s)
或者如果你想使用 sum 函数更好:
print(sum([i for i in range(10) if (i % 3 == 0) or (i % 5 == 0)]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.