2015-12-09 88 views
0

我是一种Python中的noob。这是我需要在午夜之前提交的项目。我编辑的越多,看起来越糟糕。我需要帮助完成我的回文检查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 

我大多需要帮助试图摆脱标点符号。这对我来说最为困难。

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

+0

哪个*特定*部分你有麻烦?这段代码有什么问题,您是如何尝试修复它的?请编辑您的问题以提供这些详细信息(错误输出的例子会特别有用)。 – tripleee

+1

“回文”的拼写错误令人分心;也许是一个开始,解决这个问题。 – tripleee

+0

palindrone对我来说更容易打字(lol),而且在我的脑海里听起来是一样的,所以我基本上忽略了拼写错误。 –

回答

1

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

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

这里是你如何翻译是:

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

你并不需要第二个循环可言,而是:

backward_string = lowercase[::-1] 
+0

(评论翻译)这工作,但类似的尝试我的失败。当我去做那件事时,它说我()内需要2件东西[对不起,忘记了确切的措辞]但我同时拥有一件物品和一件''。 'replace'之前放置的内容真的很重要吗? –

+0

是的,它很重要。 ''foo'.replace('a','')'什么都不做(返回“foo”),而'bar'.replace('a','')'产生“br”。 – tripleee

+0

哇谢谢,真的有帮助。(认真) –

0

我大多需要帮助试图摆脱的标点。

的方式之一,摆脱标点符号的是

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

这不是一个足够的答案。请给你的代码添加解释 –

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 

注:有很多方法来构建清洁字符串。对于这样一种方式,请参考安东尼的答案。