问题描述
因此,就像我尝试通过基本的编码挑战来教自己使用python一样。我试图使程序接受用户输入,然后执行操作,然后输出正确的结果。相反,它只是忽略所有操作。 我认为它与缩进有关,但是...我想学习python大约需要30分钟,所以我真的有0个主意。请问有人可以解释为什么以及在什么地方不起作用?
SaveSystem.SaveData(SaveSystem.PLAYER_STORAGE,player.transform);
输出:
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))
解决方法
运行程序时出现此错误:
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和Python 3之间的区别-在Python 2中,input()
评估了参数而不是将其视为字符串。
如果您使用的是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))
,
数字可以是整数,浮点数或字符串。
使用int()将其转换为整数。
如果您想检查用户是否输入了“真实”字符串,请使用.isdigit()
尝试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