我需要帮助完成我的回文检查python代码

时间:2015-12-09 04:59:51

标签: python python-2.7

我是python中的一个菜鸟。这是我需要在午夜之前提交的项目。我编辑的越多,它似乎越糟糕。

所以这是我的代码:

import string

def palendrone():

    input = raw_input('give us some stuff and we will see if it is a palendrone:')
    lowercase = string.lower(input)

    new_string = ''
    markList = [".", " ", ";", ":", "!", "?", "/", "," , "#", "@", "$", "&", ")", "(", "\", '*', '^'"]

    for item in markList in lowercase:    
        del(item) in lowercase

    for letter in (lowercase):
        new_string += letter

    backwards_string = new_string[::-1]

    print new_string
    print backwards_string

    return backwards_string == new_string

我主要需要帮助试图摆脱标点符号。事实证明这对我来说是最困难的。

在这种情况下,最好的方法是什么?

3 个答案:

答案 0 :(得分:1)

你快到了。你想要的逻辑是“对于markList中的每个项目,如果该项目以小写形式存在,则将其删除”。

您已经很好地尝试将其转换为代码,但不幸的是没有del(item) in lowercase这样的声明,要从字符串中删除内容,您需要用其他内容替换它们。

以下是您翻译的方式:

for item in markList:
   if item in lowercase:
      lowercase = lowercase.replace(item, '')

根本不需要第二个循环,而是:

backward_string = lowercase[::-1]

答案 1 :(得分:0)

  

我主要需要帮助试图摆脱标点符号。

摆脱标点符号的方法之一是

import re
new_string = re.sub('[:?!/]', '', input)

答案 2 :(得分:0)

这里有几件事:

1)你必须逃脱\,就像"\\"一样。

2)迭代输入字符串并拒绝markList中的某些内容在算法上更好

import string

def palindrome():

    input = raw_input('give us some stuff and we will see if it is a palendrone:')
    lowercase = string.lower(input)

    new_string = ''
    markList = [".", " ", ";", ":", "!", "?", "/", "," , "#", "@", "$", "&", ")", "(", "\\", '*', '^']


    for letter in lowercase:
        if letter not in markList:
            new_string+=letter

    backwards_string = new_string[::-1]

    print new_string
    print backwards_string

    return backwards_string == new_string

注意:有很多方法可以构建清理过的字符串。有一种方法可以参考安东尼的答案。