Python 回文函数问题
我正在编写一个函数来查看字符串是否是回文,但我的代码遇到了一个问题。它似乎为大多数字符串提供了正确答案,但并非所有字符串都是如此! 这是:Python 回文函数问题,python,Python,我正在编写一个函数来查看字符串是否是回文,但我的代码遇到了一个问题。它似乎为大多数字符串提供了正确答案,但并非所有字符串都是如此! 这是: def isPalindrome(string): for letter in string: if letter == string[(len(string)-1-string.index(letter))]: return True else: return Fals
def isPalindrome(string):
for letter in string:
if letter == string[(len(string)-1-string.index(letter))]:
return True
else:
return False
怎么了?谢谢 使用字符串切片
字符串[开始:停止:步骤]
字符串[:-1]
从终点开始,一步一步地向起点移动。
换句话说,从最后一个索引开始对单词进行切片,然后移向第一个索引。
看见
这是解决问题的最好办法。
def回文字:str->bool:
返回单词==单词[:-1]
回文“围巾”
>>>因为围巾而假!=压裂
回文“旋转器”
>>>因为rotator==rotator,所以为True
关于您当前的实施
函数在第一个字母后停止,因为return语句立即停止函数并返回值。
有很多方法可以修复代码
将return更改为yield,这将返回一个新的值。
使用迭代生成器,然后将为每个字母显示True或False
如果项目为真,则结果为回文
这不是解决这个问题的有效方法。
def isPalindromestring:
对于字符串中的字母:
如果字母==string[lenstring-1-string.indexletter]:
屈服于真实
其他:
假屈服
测试=listisPalindrome'rotator'
打印测试
>>>[真的,真的,真的,真的,真的,真的,真的]
printalltest==True
>>>真的
测试=listisPalindrome“围巾”
打印测试
>>>[假,假,真,假,假]
printalltest==True
>>>假的
当前,如果整个单词不匹配,则返回true。仅当任何字母不匹配时返回False,并在循环结束时返回True
def isPalindrome(string):
for letter in string:
if not letter == string[(len(string)-1-string.index(letter))]:
return False
return True
欢迎来到堆栈溢出。它似乎为大多数字符串提供了正确答案,但并非所有字符串都是如此-你能举个例子吗?请阅读。你知道退货是什么吗?函数在返回前会查看多少个字母?