我是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 :(得分: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
注意:有很多方法可以构建清理过的字符串。有一种方法可以参考安东尼的答案。