测试用户输入是int还是str,如果输入是str则失败。我继续得到strs我输入未定义

时间:2017-02-06 21:47:17

标签: python python-3.x

我正在尝试测试我的用户输入是字符串还是整数。

feet = input ("Enter your feet.")
inches = input ("Enter your inches.")

if type(eval(feet)) and type(eval(inches)) == int:
    print ("both are numbers!")
else:
    print ("That's not a Number!")

这是我的代码,如果我为英尺和英寸的值输入数字,它会起作用。但是,如果feet = a,我会收到一条错误,指出a未定义。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您使用eval做错了什么。这从来都不是做任何事情的好方法。

相反,尝试转换为int并捕获异常:

try:
    feet = int(feet)
    inches = int(inches)
except ValueError:
    print("not numbers!")
else:
    print("numbers!")

答案 1 :(得分:0)

不要使用eval来测试用户输入是否为整数。您收到错误,因为解释器正在尝试查找名为a的变量,但没有定义。相反,您可以检查字符串是否只包含数字。

def is_integer(s):
    for c in s:
        if not c.isdigit():
            return False
    return True

feet = input ("Enter your feet.")
inches = input ("Enter your inches.")

if is_integer(feet) and is_integer(inches):
    print ("both are numbers!")
else:
    print ("That's not a Number!")

这假设负数无效。