需要作为整数使用时输入返回字符串

Input returning string when it needs to be used as an integer

所以我想通过完成基本的编码挑战来自学 python。我试图让程序接受用户输入然后执行操作然后输出正确的结果。相反,它只是忽略所有操作。 我认为这与缩进有关,但是...我花了 30 分钟深入学习 python 所以我真的有 0 个想法。 有人能解释一下为什么和这在哪里不起作用?

var = input("pick number!= ")


def fizzbuzz(var):
    operand0 = 3
    operand1 = 5
    if var % operand0 == 0 and var % operand1 == 0:
        return "FizzBuzz"
    if var % operand0 == 0:
        return "Fizz"
    if var % operand1 == 0:
        return "Buzz"
    else:
        return var


print(fizzbuzz(var))

输出:

  File "****", line 17, in <module>
    print(fizzbuzz(var))
  File "****", line 7, in fizzbuzz
    if var % operand0 == 0 and var % operand1 == 0:
TypeError: not all arguments converted during string formatting```

当我 运行 你的程序时,我得到这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in fizzbuzz
TypeError: not all arguments converted during string formatting

这是因为 var = input("pick number!= ") 使 var 成为字符串,而不是数字 % 对字符串的处理方式与对数字的处理方式不同 — 请参阅 https://pyformat.info/#simple.

要将您的输入转换为数字,您可以使用 var = int(input("...")) 或类似的方法。

这是 Python 2 和 3 之间的区别 — 在 Python 2 中,input() 评估参数而不是将其视为字符串。

尝试 int var 而不是 int 并且 试试这个:

operand0 = 3
operand1 = 5
if var % operand0 == 0 and inp % operand1 == 0:
return "FizzBuzz"
elif var % operand0 == 0:
return "Fizz"
elif var % operand1 == 0:
return "Buzz"
else:
return var

如果您使用的是 python3,您需要将 input string 转换为 integer,并且在您的第一个 if 语句中而不是 inp(未定义)您应该使用 var:尝试:

var = int(input("pick number!= "))


def fizzbuzz(var):
    operand0 = 3
    operand1 = 5
    if var % operand0 == 0 and var % operand1 == 0:
        return "FizzBuzz"
    if var % operand0 == 0:
        return "Fizz"
    if var % operand1 == 0:
        return "Buzz"
    else:
        return var


print(fizzbuzz(var))