3

我试图弄清楚如何使用 try 和 except 来捕获空的用户输入。例如,如果你有这个:

try:
    #user input here. integer input 
except ValueError:
    #print statement saying empty string.

尽管我还需要捕获另一个值错误以确保他们输入的是整数而不是字符或字符串,但我如何使用 if 和 elif 设置来确定它是空字符串还是 str 而不是 int

4

2 回答 2

7

如果您真的只想在空字符串上引发异常,则需要手动执行此操作:

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('')等时会发生什么,答案应该很明显。

但是你如何区分一个空字符串和不同的东西呢?简单:只做user_input = input()之前的try,检查user_input里面是否为空except。(在实际代码中,您始终将if语句放在except处理程序中,例如,以区分 anOSError和 anEINTR errno与不同的errno。)

于 2013-10-25T02:16:08.970 回答
0
try:
    input = raw_input('input: ')
    if int(input):
        ......
except ValueError:
    if not input:
        raise ValueError('empty string')
    else:
        raise ValueError('not int')

试试这个,空字符串和非整数都可以检测到。下一次,具体问题。

于 2013-10-25T02:24:58.377 回答