use*_*003 1 python types input
我试图允许用户输入我的程序,但是当他们输入一个字符串我的程序失败.这是一个更大的计划,但试图纠正这个问题,我到目前为止:
data = raw_input('Enter a number: ')
number = eval(data)
if type(number) != int:
print"I am afraid",number,"is not a number"
elif type(number) == int:
if data > 0:
print "The",number,"is a good number"
else:
print "Please enter a positive integer"
Run Code Online (Sandbox Code Playgroud)
当用户输入字符串时,它返回:
number = eval(data)
File "<string>", line 1, in <module>
NameError: name 'hel' is not defined
Run Code Online (Sandbox Code Playgroud)
非常感激任何的帮助.
您正在使用eval,它评估在当前上下文中作为Python表达式传递的字符串.你想做的只是
data = raw_input('Enter a number: ')
try:
number = int(data)
except ValueError:
print "I am afraid %s is not a number" % data
else:
if number > 0:
print "%s is a good number" % number
else:
print "Please enter a positive integer"
Run Code Online (Sandbox Code Playgroud)
这将尝试将输入解析为整数,如果失败,则显示错误消息.