我正在尝试测试我的用户输入是字符串还是整数。
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未定义。
我做错了什么?
答案 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!")
这假设负数无效。