如果用户输入有效,则将字符串转换为int / float

时间:2017-12-22 19:14:30

标签: python

嗨我很好奇是否有办法根据输入的内容将用户输入转换为特定的变量类型(我使用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)

显然,由于raw_input(),x和y都是字符串,因此这段代码不起作用,但我似乎没有得到正确的错误消息("一个或多个输入是不是数字。")而是在(D = x-y)得到错误。我相信这是由于我的“如果'声明总是注册为True,但我不确定为什么会这样。

2 个答案:

答案 0 :(得分:1)

您可以使用异常处理来执行此操作。基本上,这个想法只是尝试将xy转换为浮点数并进行所需的计算。如果xy无法转换为浮点数,则python将引发ValueError,您可以在try和except语句中捕获它。你可以制作一个循环,这样你就可以不断要求用户输入xy,直到它如此工作:

    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!')

答案 1 :(得分:0)

如果只返回您想要的结果,如果其中一个无法转换为数字,则会引发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."