Python输入字符串错误(不想使用raw_input)
我有一个菜单,让用户选择一个选项。这个菜单的选项是从1到10,所以我使用了输入功能,而不是raw_input。
我的代码里有一个if语句,如果用户输入的数字在1到10之间,就执行对应的选项。如果用户输入其他数字,else语句会提示用户选择一个1到10之间的数字。
问题是,如果用户输入一个字符串,比如说qwert,就会报错,因为它是一个字符串。我明白为什么会这样,但我不想使用raw_input。
我该怎么做才能让用户输入字符串时,直接进入else语句,并打印出“只接受数字。请从1到10中选择一个数字”这样的提示呢?
我不想用任何复杂的编程来解决这个问题。
祝好,
Favolas
编辑 感谢大家的回答,抱歉回复晚了,因为我有一些健康问题。
我不能使用try或except,因为老师不允许。最后,我使用了raw_input,因为这是最简单的选择,但我很高兴看到有很多方法可以解决这个问题。
祝好,
Favolas
7 个回答
4
我不太确定你认为什么是高级的做法,不过有一种简单的方法可以这样做。
def getUserInput():
while True:
a = raw_input("Enter a number between 1 and 10: ")
try:
number = int(a)
if (0 < number <= 10):
return number
else:
print "Between 1 and 10 please"
except:
print "Im sorry, please enter a number between 1 and 10"
在这里,我使用了try/except语句,确保输入的字符串可以转换成整数。同时,我还用了一个循环,这个循环会一直运行,直到输入的数字在1到10之间(0<数字 <=10)。
4
你应该使用raw_input()
,即使你不想这样做也没关系 :) 这个方法总是会给你一个字符串。然后你可以用下面的代码
s = raw_input()
try:
choice = int(s)
except ValueError:
# choice is invalid...
来尝试把它转换成一个整数。
5
当你尝试把一个字符串转换成数字时,可能会出现异常,也就是错误的情况。
举个例子:
try:
int(myres)
except:
print "Only numbers are valid"