I am trying to allow a user to input into my program, however when they enter a string my program fails. It is for a bigger program but was trying to correct the problem, I have so far:
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"
when the user enters a string, it returns:
number = eval(data)
File "", line 1, in
NameError: name 'hel' is not defined
Any help would be most appreciated.
解决方案
You're using eval, which evaluate the string passed as a Python expression in the current context. What you want to do is just
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"
This will try to parse the input as an integer, and if it fails, displays the error message.