为什么我在python控制台中运行此代码时会不断收到错误消息?我输入5。
a = raw_input("type a number here: ")
if type(a) != int == False:
print ("Input verified!")
elif type(a) != float == False:
print ("Input verified!")
else:
print ("Wrong!")
答案 0 :(得分:4)
type(a) != int == False
是链式比较,评估为:
(type(a) != int) and (int == False)
int == False
总是假的。
不要在布尔测试中使用== False
或== True
;直接测试或使用not
。另外,使用isinstance()
来测试特定类型:
if isinstance(a, int):
# ...
但是,raw_input()
会返回str
类型的对象,始终。它不会生成int
或float
类型的对象。您需要使用float()
显式转换,然后使用异常处理来处理非有效整数或浮点数的输入:
try:
result = float(a)
print 'Input verified'
except ValueError:
print 'Sorry, I need a number'
另见Asking the user for input until they give a valid response