2014-01-25 118 views
0

我被要求編寫一個程序來測試一個給定的字符串是否是迴文。 n是長度爲1的字符串= x < = 10000不包含空格或特殊字符。我在幾分鐘內寫了如下內容:Python迴文挑戰

def run(n): 
    n = n.replace('\n','') 
    nprime = n[::-1] 
    Bool = True 
    for i in range(0,len(n)): 
    if not n[i]==nprime[i]: 
     Bool = False 
    if Bool==True: 
    print "Y" 
    else: 
    print "N" 

顯然這對某些測試用例是失敗的。我不知道它失敗的測試用例。我嘗試了所有邊緣案例,我可以想到和我的腳本似乎工作正常。有沒有人有任何想法可能會失敗?

+10

你不能用'n任何特別的原因== N [:: -1]'? – user2357112

+1

哪個測試用例是該程序明顯失敗的? –

+0

我最好的猜測是你沒有正確處理I/O。無論是錯誤地解析輸入,還是不以正確的格式輸出輸出。 – user2357112

回答

0

我將簡化您的代碼:

def check(inval): 
    val = inval.strip().lower() 
    lav = val[::-1] 
    print (val == lav) and 'Y' or 'N' 

如果你想一個非常廣義的版本使用:

def check(inval): 
    val = ''.join([l for l in inval if l.isalnum()]).lower() 
    lav = val[::-1] 
    result = (val == lav) 
    # print result and 'Y' or 'N' # Since comments indicate some dislike this! 
    return result 
+2

更好的是,只需返回相等結果並讓調用者處理顯示輸出。 –

+0

爲什麼當條件表達式存在時容易出錯的'和'/'或'黑客? – user2357112

+0

它是否也適用於邊緣情況太等例如「上升投票,先生」 –