如何避免空输入

时间:2019-05-14 14:35:47

标签: python

我是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 :

但似乎没有任何效果!我知道这可能很愚蠢,但是我现在不明白为什么!我在做什么错了?

3 个答案:

答案 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:")