需要作为整数使用时输入返回字符串
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))
所以我想通过完成基本的编码挑战来自学 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))