2017-09-26 49 views
-2

而在Python 3中的代碼製作一個簡單的程序我被困低於:如何在python 3中查找函數參數是否爲字母表?

def check_guess(letter,guess): 
    max = guess.isnumeric() 
    #print(type(max)) 
    print(max) 
    if(max == 'True'): 
     print("Invalid") 
     return False 
    elif(guess > letter): 
     print("High") 
     return False 
    elif(guess < letter): 
     print("Low") 
     return False 
    else: 
     print("Correct") 
     return True 

check_guess("H","2") 

有程序中沒有錯誤,但我沒有得到期望的結果。每當我嘗試check_guess("H","2")它應該返回Invalid,但它顯示Low。如果guess參數不是check_guess()函數中的字母字符,我想打印「無效」。我怎麼做?請幫忙。

+2

你檢查字符串「True」而不是「True」。 –

+1

'max'是一個內置函數,因此對於一個變量來說不是一個好名字。此外,將布爾與「真」進行比較也是毫無意義的,因爲「如果max == True:'等於'if max:'。 –

+0

@Jim Fasarakis Hilliard。非常感謝。我知道了。 – Rajan

回答

0

'True' VS True

'True'是一個字符串。 True是真正的重言式布爾值。 (見吉姆的評論)。

不要重新定義內置插件

首先,不要使用一箇中間變量,不反正它命名爲內置功能。所以,只要做到這一點:

if not letter.isnumeric(): 
    print("Invalid") 

檢查右邊的參數

你說要檢查,如果letter是有效的,但那麼你做guess.isnumeric()哪些檢查guess代替。

另外,當輸入是一個數字時,你確定你希望它無效嗎?我想你想not letter.isnumeric() ......我想到你居然也做要檢查guess ...

+0

我沒有說要檢查'letter'參數。我提到過我想檢查'guess'參數是否是數字。代碼是關於簡單的字母匹配,這就是爲什麼我想避免數字作爲'guess_check()'函數的參數。我剛剛給出了check_guess(「H」,「2」)的例子,如果你運行我發佈的代碼,它會告訴你'Low'。 – Rajan

+0

@Rajan你正在測試'guess',但是''H「,」2「'有無效的'letter' ...可能轉換你的參數? – HyperNeutrino

0

您應該因而isalpha替換ISNUMERIC如果要比較兩個字母:

def check_guess(letter, guess): 
    assert isinstance(letter, str) 
    assert isinstance(guess, str) 
    if not letter.isalpha() or not guess.isalpha(): 
     print("Invalid") 
     return False 
    if (guess > letter): 
     print("High") 
     return False 
    elif (guess < letter): 
     print("Low") 
     return False 
    else: 
     print("Correct") 
     return True 

check_guess("H", "2") 
相關問題