首页 > 解决方案 > 嗨,目前遇到格式类型错误并且很困惑,有没有新的眼睛想借给我一个新的视角?

问题描述

所以我目前正在上课,今天的目标之一是使用 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 进行编码。

编辑:感谢所有有用的刺激和建议,想通了:)

标签: pythontypeerror

解决方案


扩展来自@rdas 的评论:

在循环的第一次执行中: total = 0 所以在第一个 if 语句中,条件为真(0%3 ==0) ,在第 4 行设置total为“Fizz”。

在循环的第二次执行中: total = 'Fizz'. 因此,正如建议的那样,total此时是一个字符串,对于字符串,%它用于字符串格式化。由于 3 不是total格式字符串的有效参数集,因此您会看到您看到的错误。

话虽如此,这可能意味着您的代码中使用 total 的方式存在问题!


推荐阅读