2014-08-31 62 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