2013-10-25 20 views
0

我想弄清楚如何使用try和except来捕获空的用户输入。 如果你有这样的例子:如何使用try和python除外捕获空的用户输入?

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

虽然我还需要搭上其他值误差,以确保他们进入一个整数,而不是一个字符或字符串,我怎么能使用if和elif的设置,以图它是否是一个空字符串或海峡而不是INT

+1

欢迎来到StackOverflow!感谢您发布您的代码,但请在您的问题中多加一点说明:您有什么问题,您期望得到什么结果,以及[您尝试过什么](http://whathaveyoutried.com)到目前为止?通过[问题清单](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)将帮助我们更好地回答你的问题。谢谢! –

回答

3

如果你从字面上只希望在空字符串抛出一个异常,你需要做手工:

try: 
    user_input = input() # raw_input in Python 2.x 
    if not user_input: 
     raise ValueError('empty string') 
except ValueError as e: 
    print(e) 

,但“整数输入“部分的评论让我想到了wh在你真的想要引发除整数以外的任何异常,包括但不限于空字符串。

如果是这样,请打开您的交互式解释器,看看当您键入诸如int('2'),int('abc'),int('')等等时会发生什么情况,答案应该非常明显。

但是,你如何从不同的东西区分出空字符串?简单:只需在try之前执行user_input = input(),然后检查user_inputexcept内是否为空。 (你把if语句中except处理所有的时间在真正的代码,例如,用不同的errno来区分与EINTRerrnoOSError从一个。)

0
try: 
    input = raw_input('input: ') 
    if int(input): 
     ...... 
except ValueError: 
    if not input: 
     raise ValueError('empty string') 
    else: 
     raise ValueError('not int') 

试试这个,无论是空字符串和非INT可以被检测到。下次,请具体说明问题。

相关问题