2013-04-07 35 views
2

我想創建一個函數,當我調用函數時,它會提示用戶輸入一個整數並返回它是偶數還是奇數。 我正在努力使我的代碼打印錯誤控制檯時什麼都沒有輸入或當一個字符串輸入時,我已經得到它的點,如果我輸入一個數字,它返回數字,「是一個偶數「如果它甚至和數量,‘是不是偶數’如果不是即使在這裏是我的代碼下面我使用python的2.7.3試圖創建一個奇數偶函數

def is_even(): 
    x = int(raw_input("Enter number")) 
    if x % 2 == 0: 
     return x, "is an even number" 
    else: 
     return x, "is not an even number" 

print is_even() 
+0

我有理由相信,如果一個試圖進入一個非數字的代碼將打印錯誤,雖然這可能不是你是什麼尋找。 – Sinkingpoint 2013-04-07 21:39:25

+0

只是說,你不想要返回它作爲一個字符串,而不是一個元組('return x,'不是一個偶數''返回兩個元素,而不是它們的組合)。您可能想要使用'return'{}不是偶數'.format(x)'。 – 2013-04-07 22:47:59

回答

6

您應該使用try - except塊:

def is_even(): 
    try: 
     x = int(raw_input("Enter an integer: ")) # 'number' != 'integer' 
     if x % 2 == 0: 
      return x, "is an even number" 
     else: 
      return x, "is not an even number" 
    except ValueError: 
     return "Error: You didn't enter an integer!" 

A ValueError如果輸入不能被解析爲行上的整數x = int(...),在這種情況下,我們達到底部的回報聲明。

1

可以鑄造爲int之前使用isdigit()方法:

def is_even(): 
    x = raw_input("Enter number") 
    if x.isdigit(): 
     if int(x) % 2 == 0: 
      return x, "is an even number" 
     else: 
      return x, "is not an even number" 
    else: 
     return x, "is not an int" 
+1

負整數怎麼樣? – DSM 2013-04-07 21:55:24

+0

@DSM誠然,我沒有想過這件事。我想'x.startswith(「 - 」)和x [1:]。isdigit()'可以解決這個問題;但是我的解決方案只是@ A.R.S.的一個選擇,我認爲這比我的更好。 – 2013-04-07 22:00:19