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

问题描述

因此,就像我尝试通过基本的编码挑战来教自己使用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