我坚持要解决的问题。我只是想从用户的输入中获取int(1-4),而不接收任何字符串/ float / etc。我已经弄清楚如果用户选择1-4以外的任何整数该怎么办。但是,我陷入了用户选择除整数之外的任何内容的部分(即字符串,浮点数等)。 这是我到目前为止所做的:
def menu():
my code
menu()
# keeps on looping till user have selected a proper selection (1-4)
selection = int(input("> "))
if selection == 1:
my code
elif selection == 2:
my code
elif selection == 3:
my code
elif selection == 4:
my code
else:
print("I'm sorry, that's not a valid selection. Please enter a
selection from 1-4. ")
menu()
将寻求任何帮助。我一直在努力寻找解决方案达数小时之久,但最后却陷入困境。
答案 0 :(得分:0)
看来您似乎没有对input
来的值做任何整数运算-我个人将其保留为字符串。
selection = input("> ")
if selection == "1":
pass
elif selection == "2":
pass
#...
else:
print("I'm sorry...")
通过这样做,您根本不必处理这种极端情况。
如果必须(出于某种原因)将其强制转换为int
(例如,稍后使用该值),则可以考虑使用异常处理。
try:
selection = int(input("> "))
except ValueError:
selection = "INVALID VALUE"
,然后继续,因为您当前的else语句将捕获并正确处理它。
答案 1 :(得分:0)
尝试此操作如果您确保您的代码允许用户仅在python中输入数字:
def numInput():
try:
number = int(input("Tell me a number"))
except:
print "You must enter a number"
numInput()
return number
答案 2 :(得分:0)
您可以使用无限循环不断询问用户输入所需范围内的整数,直到用户输入一个整数:
while True:
try:
selection = int(input("> "))
if 1 <= selection <= 4:
break
raise RuntimeError()
except ValueError, RuntimeError:
print("Please enter a valid integer between 1 and 4.")