2014-08-31 58 views
0
a=raw_input("enter the word") 
b=[str(letter) for letter in a] 
c=b[::-1] 
print c 

if b==c: 
    print ("it is a palindrome") 
else: 
    print "it is not a palindrome" 

這個程序工作正常..只有一個問題我如何修改它,以便它打印護士作爲迴文運行。它目前正在將護士打印爲迴文。請幫助和建議。 此代碼適用於python 2.7,請僅在此代碼上即興創作。謝謝。檢查給定的輸入詞是否是迴文筆

+0

替換不是一個參數。我喜歡你的想法,但請給出正確的屬性和論點。 – 2014-08-31 18:03:11

回答

2

雖然有這樣做的更好的方法,這個例子顯示了你的代碼的改進(特別)。你可以檢查letter.isalpha()

b = [str(letter) for letter in a if letter.isalpha()] 

現在檢查工作。

演示:

>>> x = "nurses run" 
>>> b=[str(letter) for letter in x if letter.isalpha()] 
>>> 
>>> b 
['n', 'u', 'r', 's', 'e', 's', 'r', 'u', 'n'] 
>>> c = b[::-1] 
>>> b == c 
True 
>>> 

編輯:

使用replace代碼:

x = x.replace(" ", "") 

>>> x = "nurses run" 
>>> x = x.replace(" ", "") 
>>> x 
'nursesrun' 

請注意,你就必須更換明確每一個類型的這種方式。

+0

非常感謝它的工作! – 2014-08-31 18:07:17

+0

+1也可以'letter.lower()'。那不是'str(...)'不必要的嗎? – 2014-08-31 18:07:30

+0

@tobias_k同意。 'lower()'可能是一個基於需求的選項。另外,'str()'是多餘的。 – karthikr 2014-08-31 18:13:41

1

你可以試試這個:

def is_palindrome(word): 
    return word == ''.join(reversed(word)) 

print is_palindrome('madam') #True