gpt4 book ai didi

python - if block 中不支持的操作数类型 TypeError

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:02 24 4
gpt4 key购买 nike

我有一个以 TypeError 终止的函数,我不确定为什么:

#under 4 million

def fib(a, b):
a, b = 0, 1
while b <= 4000000:
a, b = b, (a+b)
print a

#always call it with "fib(0, 1)"

fiblist = [fib(0, 1)]
print fiblist
#now for the function that finds the sum of all even fib's

total = 0
for i in fiblist:
if i%2 == 0:
total = total + i
print total

这是错误信息:

Traceback (most recent call last):
File "C:\Python27\ProjectEuler\ProjectEuler2.py", line 19, in <module>
if i%2 == 0:
TypeError: unsupported operand type(s) for %: 'NoneType' and 'int'
>>>

非常感谢您提供的任何帮助。谢谢。

最佳答案

fib(a, b) 不返回任何东西 - 它不返回值,而是打印它。如果一个函数没有要求返回任何东西,Python 会隐式地让它return None

因此,fiblist = [fib(0, 1)][None]

显然,None%2 没有意义。

您应该重写 fib(a, b) 使其成为一个生成器并yield 它的结果。然后您可以迭代它,以类似于迭代 range()xrange()、列表等的方式。

关于python - if block 中不支持的操作数类型 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17100522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com