嗨,我很好奇是否有一种方法将用户输入转换为基于输入内容的特定变量类型(我正在使用RAW_INPUT(),不确定是否有一个为此更好的功能)。我知道RAW_INPUT()总是制作一个字符串,但是如果输入有效,可以将字符串转换为整数或浮点?例如,如果用户输入" 1",是否有一种方法可以使该变量存储为整数而不是字符串?这是我试图进行工作的代码:
print "Subtraction Calculator (x-y)"
def calculator(x, y):
if [isinstance(x, int) or isinstance(x, float)] and [isinstance(y, int) or
isinstance(y, float)]: #This should be checking to see if x and y are both
numerical
D = x - y
return D
else:
return "One or more inputs is not a number."
x = raw_input("x = ")
y = raw_input("y = ")
print calculator(x, y)
显然,此代码不起作用,因为x和y都是由于raw_input()引起的字符串,但是我似乎没有收到正确的错误消息("一个或多个输入不是数字。")和相反,AM在(d = x -y)上遇到错误。我相信这是由于我的"如果"陈述始终为真实登记,但我不确定为什么这是。
您可以使用异常处理来执行此操作。基本上,这个想法只是尝试将x
和y
转换为浮点,然后进行所需的计算。如果x
或y
无法将其转换为浮点,则Python将筹集一个ValueError
,您可以在尝试中捕获和异常语句。您可以进行循环,以便您不断要求用户输入x
和y
,直到它像这样工作:
while(True):
try:
x = raw_input('x = ')
y = raw_input('y = ')
print(float(x)-float(y))
break
except ValueError:
print('One of those was not a float! Try again!')
简单地返回所需的结果以及两个不能转换为数字的结果,它将提高ValueError
:
def calculator(x, y):
return float(x) - float(y)
x = raw_input("x = ")
y = raw_input("y = ")
print calculator(x, y)
请注意,如果您确实要检查变量是int还是float,则可以使用isinstance(x, (int, float))
。因此,您的代码可以被重写为:
def calculator(x, y):
if isinstance(x, (int, float)) and isinstance(y, (int, float)):
return x - y
return "One or more inputs is not a number."