我是Python的新手,我编写了这部分代码,用户必须在3个值选项之间进行选择。我能够检查用户是否插入了小于零或大于最大值的值,但是我无法检查用户是否未插入任何值。
user.choose_action()
choice = input(" Choose action:")
while int(choice) < 1 or int(choice) > 3:
print(" " + "The choice must be between 1 and 3. Retry.")
choice = input(" Choose action:")
index = int(choice) - 1
if index == 0:
other things
此代码在int(choice)<1或int(choice)> 3时抛出: ValueError:int()的基数为10的无效文字:'',据我了解,抛出此错误是因为我试图将空值转换为int。我尝试使用其他解决方案进行修复,例如:
while int(choice) < 1 or int(choice) > 3 or choice == '' :
rest of the code
或
try:
choice = input(" Choose action:")
except SyntaxError:
y = None
或
while int(choice) < 1 or int(choice) > 3 or choice is None :
但似乎没有任何效果!我知道这可能很愚蠢,但是我现在不明白为什么!我在做什么错了?
答案 0 :(得分:3)
更改条件的顺序:
while choice == '' or int(choice) < 1 or int(choice) > 3 :
rest of the code
区别在于,由于短路,如果输入为空,则不会尝试评估可能引发错误的其他条件。
答案 1 :(得分:0)
在这种情况下,您可以使用try-except块。尝试如下操作:
while():
try:
# your main code here
except ValueError:
print('please enter a value:)
choice=input()
答案 2 :(得分:0)
请使用
raw_input("Choose action:")