我在python 3中编写代码,我需要输出两个不同的字符串,具体取决于输入内容。 它们都是ValueErrors。
try:
number = False
while number == False:
chooseword = int(input("Please enter an integer number (0<=number<10) to choose the word in the list: "))
except ValueError: #empty input
print("Empty input!")
except ValueError: #non-integer, non-empty input
print("Input must be an integer!")
else: #do stuff
我已经尝试过这个问题的方法,但我只得到一条打印的消息。 How to catch empty user input using a try and except in python?
我还试图通过使用while循环忽略其中一个选择中的ValueError,并尝试使用try除了块来捕获另一个选项:
empty = True
while empty == True:
chooseword = int(input("Please enter an integer number (0<=number<10) to choose the word in the list: "))
if chooseword = "":
empty = True
答案 0 :(得分:2)
由于您正在捕捉ValueError
,因此第一个except
将始终抓住它。事实上,如果你看一下ValueError
int()
加注,两种情况都是一样的:
>>> int('')
ValueError: invalid literal for int() with base 10: ''
>>> int('1.2')
ValueError: invalid literal for int() with base 10: '1.2'
如果你想特别抓住空箱子,只需看一下例外:
try:
word = input("Please enter an integer number (0<=number<10) to choose the word in the list: ")
word = int(word)
except ValueError as e:
if not word:
print("Empty!")
else:
print("Invalid!")
答案 1 :(得分:1)
拆分两个错误条件,以便分别处理每个错误:
number = None
while number is None:
chooseword = input("Please enter an integer number (0<=number<10) to choose the word in the list: ")
if not chooseword.strip():
print("Empty input!")
else:
try:
number = int(chooseword)
except ValueError:
print("Input must be an integer!")
在这种情况下,chooseword.strip()
将从输入中删除任何空白字符,以便将空或全空间输入作为零长度字符串处理。如果提供 输入,则try
/ except
块将捕获任何非整数值。
答案 2 :(得分:0)
由于值错误由其他人解释,您也可以通过此方法执行相同的操作
while True:
answer = input('Enter a number: ')
if isinstance(answer,int) and answer in range(0,10):
do_what_you want()
break
else:
print "wrong Input"
continue
print answer
instance
方法将检查输入是否为int,isinstance将返回True,如果其int为False。如果a介于0-9之间,则返回范围内的答案,否则返回false。
答案 3 :(得分:0)
你可以用这种方式改变python输入函数:
请定义一个新功能,如
else
设置初始值,如
case
在输入的值不是数字之前,请尝试获取数字
def Input(Message):
控制I / O错误等
Value = None
最后,你可以返回你的值,它可以是None或真值。