2010-07-25 122 views
3

考慮以下代碼:檢查空號輸入

>>> num = int(raw_input('Enter the number > ')) 

如果用戶鍵入任何操作,按下「Enter」鍵,我想捕捉。 (捕獲空輸入)

有這樣做的方法有兩種:

  • 我做一個簡單的num = raw_input(),然後檢查是否num == ''。之後,我可以將它投射到int。我收到ValueError。但在這種情況下,我無法區分非數字輸入和空輸入。

有關如何做到這一點的任何建議?

+0

怎麼辦你想在空輸入時發生?將'num'設置爲某個默認值? – Thomas 2010-07-25 10:37:34

+0

@Thomas:是!究竟! – user225312 2010-07-25 10:38:02

回答

4

是這樣的嗎?

num = 42 # or whatever default you want to use 
while True: 
    try: 
     num = int(raw_input('Enter the number > ') or num) 
     break 
    except ValueError: 
     print 'Invalid number; please try again' 

這依賴於一個事實,即適用於一些int()將簡單地返回這個數字,那emtpy字符串的計算結果爲False

+0

完美!謝謝! – user225312 2010-07-25 10:42:04

0

從非pythoner:

num = your_default_value; 
input = get_input(); 
if(input != '') num = parse_integer(input); 
0

喜歡的東西:

flag = True 
while flag: 
    try: 
     value = input(message) 
    except SyntaxError: 
     value = None 
    if value is None: 
     print "Blank value. Enter floating point number" 

對於輸入這可以捕獲該異常,並與打印語句提醒用戶空白值