我试图弄清楚如何使用try和except来捕获空用户输入。 如果你有这个例子:
try:
#user input here. integer input
except ValueError:
#print statement saying empty string.
虽然我还需要捕获另一个值错误,以确保它们输入一个整数而不是字符或字符串,我怎么能使用if和elif设置来判断它是否为空字符串或str而不是int
答案 0 :(得分:5)
如果你真的只想在空字符串上引发异常,你需要手动执行:
try:
user_input = input() # raw_input in Python 2.x
if not user_input:
raise ValueError('empty string')
except ValueError as e:
print(e)
但评论中的“整数输入”部分让我觉得你真正想要的是在整数以外的任何事情上引发异常,包括但不限于空字符串。
如果是这样,请打开您的互动口译员,看看当您输入int('2')
,int('abc')
,int('')
等内容时会发生什么,答案应该非常明显。< / p>
但是,你怎么区分空字符串和不同的字符串呢?很简单:只需在user_input = input()
之前执行try
,然后检查user_input
中except
是否为空。 (您在if
处理程序中始终将except
语句放在实际代码中,例如,将OSError
与EINTR
errno
区分开来与不同的errno
{{1}} {{1}}。)
答案 1 :(得分:0)
try:
input = raw_input('input: ')
if int(input):
......
except ValueError:
if not input:
raise ValueError('empty string')
else:
raise ValueError('not int')
试试这个,可以检测到空字符串和非字符串。下一次,具体问题。