Python 回文程序的小问题
我一直在做这个回文程序,我真的很快就要完成了。快到让我有点疯狂的地步了,哈哈。 程序应该检查每个“短语”以确定它是否是回文,如果它实际上是回文,则返回一个删除空格和标点的小写版本。否则,如果不是,它应该不返回任何值。 我只是在将测试数据引入函数时遇到了一个问题。我似乎想不出正确的处理方法。可能很简单…有什么想法吗? 谢谢Python 回文程序的小问题,python,palindrome,Python,Palindrome,我一直在做这个回文程序,我真的很快就要完成了。快到让我有点疯狂的地步了,哈哈。 程序应该检查每个“短语”以确定它是否是回文,如果它实际上是回文,则返回一个删除空格和标点的小写版本。否则,如果不是,它应该不返回任何值。 我只是在将测试数据引入函数时遇到了一个问题。我似乎想不出正确的处理方法。可能很简单…有什么想法吗? 谢谢 导入字符串 def反向(字): newword='' letterflag=-1 对于word中的Numoleter: newword+=单词[letterflag] lett
导入字符串
def反向(字):
newword=''
letterflag=-1
对于word中的Numoleter:
newword+=单词[letterflag]
letterflag-=1
返回新词
def回文(短语):
对于字符串中的点。标点符号:
短语=短语。替换(点号“”)
phrase=str(phrase.lower())
firstindex=0
第二个索引=len(短语)-1
标志=0
而firstindex!=secondindex和firstindex
可能是这一行造成了问题
for word in data:
word == word.split() # This line.
Palindromize(word)
您在这里测试是否相等,而不是重新分配变量word
,这可以使用word=word.split()
完成word
然后成为一个列表,您可能希望使用
for elem in word:
Palindromize(elem)
另外,您似乎正在调用int
上的split
方法,这是不可能的,请尝试将它们转换为字符串
另外,为什么要在for循环中将短语转换为小写,只做一次就足够了。可能是这一行造成了问题
for word in data:
word == word.split() # This line.
Palindromize(word)
您在这里测试是否相等,而不是重新分配变量word
,这可以使用word=word.split()
完成word
然后成为一个列表,您可能希望使用
for elem in word:
Palindromize(elem)
另外,您似乎正在调用int
上的split
方法,这是不可能的,请尝试将它们转换为字符串
另外,为什么要在for循环中将短语转换为小写,只需执行一次就足够了。我发现的主要错误之一是:
for word in data:
word==word.split()
这里有两个错误:
1.双等在这里没有意义。
2.如果您希望分割每个数据迭代的内容,那么这样做不会改变原始列表,因为您正在修改名为word
的重复集。要实现您的列表,请执行以下操作:
for i in range(data):
data[i]=data[i].split()
这可能会清除您的错误我发现的主要错误之一如下:
for word in data:
word==word.split()
这里有两个错误:
1.双等在这里没有意义。
2.如果您希望分割每个数据迭代的内容,那么这样做不会改变原始列表,因为您正在修改名为word
的重复集。要实现您的列表,请执行以下操作:
for i in range(data):
data[i]=data[i].split()
这可能会清除您的错误在程序的“核心”部分,您可以在Python中做得更好,例如使用。下面是一个快速演示:
>>> phrase = 'Murder for a jar of red rum!'
>>> normalized = filter(str.isalnum, phrase.lower())
>>> normalized
'murderforajarofredrum'
>>> reversed = normalized[-1::-1]
>>> reversed
'murderforajarofredrum'
# Test is it is a palindrome
>>> reversed == normalized
True
在程序的“核心”,您可以使用Python做得更好,例如使用。下面是一个快速演示:
>>> phrase = 'Murder for a jar of red rum!'
>>> normalized = filter(str.isalnum, phrase.lower())
>>> normalized
'murderforajarofredrum'
>>> reversed = normalized[-1::-1]
>>> reversed
'murderforajarofredrum'
# Test is it is a palindrome
>>> reversed == normalized
True
在你发疯之前,让我们重新思考这个问题:
if clean_data[::-1] == clean_data:
....
按铃?在你发疯之前,让我们重新思考一下这个问题:
if clean_data[::-1] == clean_data:
....
按铃?
int
没有拆分方法。尝试将它们更改为字符串。int
没有split
方法。试着把它们变成字符串。