繁体   English   中英

Python- 在 for 循环中使用 sum 时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM