2012-09-21 83 views
0

如何編寫Python代碼要求用戶輸入一個數字,返回數的INT,如果用戶輸入一個海峽,例如「一」,回到像「請輸入一個整型數字」一個錯誤消息?我怎麼能這樣做?Python:如何檢查用戶輸入是一個值還是一個str?

我也有檢查,如果數是奇數還是沒有,所以我不敢肯定我是否可以嘗試,except.I做到這一點不知道如何添加在我的代碼。

謝謝。

def getnum(): 

    errormessage="Please input a odd number" 

    asknum=raw_input("Please input a number: ") 
    num=int(asknum) 

    if num%2!=0: #return num if it is odd number 
     print num 

    else: 
     print errormessage 
     return getnum() 

getnum() 

回答

6
try: 
    a = int(raw_input("Enter an integer: ")) 
    print a # or do anything else with "a" 
except ValueError: 
    print "Please enter an integer." 


編輯爲響應 OP's comment

try: 
    a = int(raw_input("Enter an integer: ")) 
    if a % 2 == 1: 
     print "Integer is odd" # or do anything else 
    else: 
     print "Integer is even" # or do anything else 
except ValueError: 
    print "Please enter an integer." 
+0

我也有檢查,如果數是奇數還是沒有,返回數字,如果是奇數。但我不能這樣做,除了嘗試和除外。 – user1687703

+0

看到上面的編輯 – arshajii

0

有多種方法,你可以試試。

一種方法是

userinput = raw_input() 
if not all(x in string.digits for x in userinput): 
    print 'Please enter an int number' 

但是這是一個弱一點的驗證 - 它只是檢查所有輸入的字符是數字。

或者你可以嘗試

userinput = raw_input() 
try: 
    asint = int(userinput) 
except ValueError: 
    print 'Please enter an int number' 

但使用try /除了東西,應該是一個簡單的if/else。

+0

那麼,你的第一個例子應該重做爲'userinput.isdigit()',我想。 – nneonneo

+0

是的,這是更短的,但作爲一邊我必須說:恕我直言,該方法是錯誤的,因爲你會認爲它只有當字符串只是一個數字(例如'4'),而不是一個數字序列返回true。 – Harel

+0

是的,它是從C中伸出來的。可能更好地說'isdigits'或什麼(isalpha,isalnum至少是有道理的)。 – nneonneo

0
s = input() 
try: 
    return int(s) 
except: 
    return 'Error' 
0

對字符串對象使用isdigit()函數。

返回true數否則爲false。

+0

如果您不想接受負數,這很好 –

0

你可以做你想要使用提到的其他答案是什麼。 對於一些額外的信息,Python中的變量的類型可以通過使用type()

>>> a = 1 
>>> type(a) 
<type 'int'> 
>>> b = 'str' 
<type 'str'> 

獲得可以通過

>>> if type(a) == int: 
...  print 'a is integer' 
... 
a is integer 
1

注意,使用的raw_input()將存儲檢查變量的類型變量作爲一個字符串,如果你想以int形式自動存儲它,使用input()。 這是Python版本之前3.

相關問題