Python 类型错误:';非类型';对象不可迭代:3和5的倍数
我是python新手,如果这个问题有一个非常明显的答案,那么很抱歉。这是我的密码:Python 类型错误:';非类型';对象不可迭代:3和5的倍数,python,Python,我是python新手,如果这个问题有一个非常明显的答案,那么很抱歉。这是我的密码: def mult_of_3_or_5(): for x in range(21): if x % 5 == 0: (x) continue elif x % 3 == 0: (x) print(sum(mult_of_3_or_5())) 当我运行它时,会出现错误“TypeError:‘None
def mult_of_3_or_5():
for x in range(21):
if x % 5 == 0:
(x)
continue
elif x % 3 == 0:
(x)
print(sum(mult_of_3_or_5()))
当我运行它时,会出现错误“TypeError:‘NoneType’object is not iterable”。我已经研究了关于堆栈溢出的其他问题,但我仍然不知道我能做什么。任何帮助都将不胜感激 您的函数mult\u of_3\u或_5不返回任何内容。Python将返回NoneType作为默认值,即使没有显式指定 您尝试使用sum(mult_of_3_或_5())对结果求和,它将尝试求和(NoneType)。这是不可能的,因为NoneType不可编辑
print(sum(mult_of_3_or_5()))
sum()
但是mult\u of_3\u或_5()
函数不返回任何内容,因此默认情况下它返回None
sum()
正在尝试迭代值None
,这是您的错误
看起来您打算mult\u of_3\u或_5()
返回一个0到20之间的值列表,这些值是3或5的倍数。但它不会那样做。我想你的意思是:
def mult_of_3_或_5():
对于范围(21)内的x:
如果x%5==0:
产量x
如果x%3==0:#如果3和5都是除数,我怀疑你是想数两次,如果不是,则改为elif
产量x
打印(总和(3或5()之和)
基本上是3和5的所有倍数之和,如果是两者的倍数(如15),则数两次
返回113
您应该熟悉python中的generator的概念,这就是我在这里通过关键字yield
介绍的。
与return
不同的是,一旦调用,它就不会终止函数-这基本上就是我理解的您想要实现的
要阅读有关发电机的信息,请执行以下操作:
mult\u of_3\u或_5
没有返回任何内容,因此它显式返回None
应该怎么做(x)
您可能需要重新阅读有关def
使用的学习材料。您建议如何找到这些数字的总和?如果你不知道这是第一个问题。