2017-03-29 42 views
-1

我寫由127乘以輸入數輸入裝置不接受的α以及數目的程序9.的Python雖然/對/ if語句

此外號9,它不允許任何數量的包含9例如99,19等。我們能克服這個嗎?

此外,如果我鍵入「99」,它會打印"Banned number"兩次。這與第一個陳述有什麼聯繫?

banned_number = "9" 
while True: 
    number = input("number ") 

    for items in number: 
     if items in banned_number: 
      print ("Banned number.") 
     elif number.isalpha(): 
      print ("Sorry, numbers only.") 
     elif number.isdigit(): 
      a = int(number) 
      print(a* 127) 

我知道這個程序是沒用的,它顯然是 - 行使循環,這是最後的形狀,當我去上了軌道。有什麼辦法可以縮短這段代碼嗎?我們可以用一個簡單的代碼來使elif的過時嗎?

我將非常感謝您的耐心,因爲我上週剛剛啓動了Python,謝謝。

回答

-3

取邏輯圈外,並顛倒成員資格檢查:

banned_number = "9" 
while True: 
    number = input("number ") 
    if banned_number in number: 
     print ("Banned number.") 
    elif number.isalpha(): 
     print ("Sorry, numbers only.") 
    elif number.isdigit(): 
     a = int(number) 
     print(a* 127) 
+0

假設我們有兩個不同的被禁止的數字,9和1.那我們該怎麼辦呢?如果我們將它恢復爲for循環,如果我們輸入11,99等,是否有停止打印「禁止編號」兩次?謝謝。 – Ramon

+0

@Ramon - 這將是'banned_number不在數字中,other_number不在數字中',或者更通用的'not any(n中的n代表banned_numbers)',或者'set(number)--set(banned_numbers)==設定(編號)'。而且沒有理由使用循環。 – TigerhawkT3

2

首先,詞彙比較會獲取你的數字作爲字符串方面不正確的結果。

所以,如果你有興趣的特定類型進行檢查,你需要與intstrstr比較int得到正確的結果。

您可以使用isinstance(a,type)檢查值的數據類型,即執行此操作的canonical way。你可以做這樣的事情:

banned_number = [9, 1] 

while True: 
    input_num = input("number ") 
    # This will work for both Python 2.x and Python 3.x 
    try : 
     number = int(input_num) 
    except : 
     number = input_num 

    if number in banned_number: 
     print ("Banned number.") 
    elif isinstance(number, str): 
     print ("Sorry, numbers only.") 
    elif (isinstance(number, int) or isinstance(number, float)): 
     a = int(number) 
     print(a* 127) 

這將導致:

# for input 9 
Banned number. 

# for input 'a' 
Sorry, numbers only. 

# for input 99 
12573 

還有,爲什麼它是爲輸入'99'印刷兩次,因爲這將作爲兩個字符的字符串來處理的原因'9' and '9'和因此在循環時兩次印刷Banned number.

+0

## elif isinstance(number,str):##失敗了。 「數字」來自輸入,這是str,因此我們不能超越這條線?謝謝。 – Ramon

+1

這個答案似乎是使用Python 2.x,因爲它期望'input()'返回一個數字。 – Barmar

+1

編輯爲同時支持Python 2和Python 3.我使用的是Python 2,您似乎正在使用Python 3. –