python - 嗨,目前遇到格式类型错误并且很困惑,有没有新的眼睛想借给我一个新的视角?
问题描述
所以我目前正在上课,今天的目标之一是使用 for 循环和范围重新创建 fizzbuzz 游戏。我想我的目标几乎没有了,但是遇到了类型错误并且太固执而无法查找解决方案。
这是我当前的代码:
total = 0
for number in range(1, 101):
if total % 3 == 0:
total = 'Fizz'
elif total % 5 == 0:
total = 'Buzz'
elif total % 3 and 5 == 0:
total = 'Fizz Buzz'
print(number)
这是我收到的错误:
line 3, in <module>
if total % 3 == 0:
TypeError: not all arguments converted during string formatting
谁能指出我做错了什么的正确方向?我很难过,并尝试将 str() 添加到某些部分以查看是否可以解决问题。
目前使用 python 3.9.1 并且正在使用 vs-code 进行编码。
编辑:感谢所有有用的刺激和建议,想通了:)
解决方案
扩展来自@rdas 的评论:
在循环的第一次执行中:
total = 0
所以在第一个 if 语句中,条件为真(0%3 ==0)
,在第 4 行设置total
为“Fizz”。
在循环的第二次执行中:
total = 'Fizz'
. 因此,正如建议的那样,total
此时是一个字符串,对于字符串,%
它用于字符串格式化。由于 3 不是total
格式字符串的有效参数集,因此您会看到您看到的错误。
话虽如此,这可能意味着您的代码中使用 total 的方式存在问题!