为什么回文测试不起作用?

2024-10-02 22:31:54 发布

您现在位置:Python中文网/ 问答频道 /正文

回文是一个前后读相同的字符串。回文的例子包括“lol”、“abba”、“radar”和“pickle elkchip”。指示它是否在以下docstring中描述的所有情况下都能工作:“如果字符串s是回文,则返回True;否则返回False。”

def palindrome2(s):
    n = len(s)
    pal = True
    for i in range(n/2):
        if s[i] == s[n-i-1]:
            pal = True
        else:
            pal = False
    return pal

我不明白为什么这个功能不起作用。在我看来,这个功能好像起作用了。很明显,布尔函数被误用了,但我不明白上面的布尔函数是怎么被不恰当地使用的。有人能给我解释一下吗?在


Tags: 函数字符串功能falsetruedef情况pickle
3条回答

循环体的编码方式pal的值可能在True和{}之间反复变化,这取决于在特定的迭代过程中给定的一对字符是否匹配。在

最好检查是否存在不等式,将布尔变量pal设置为False,然后立即退出循环。在

像这样:

def palindrome2(s):
    n = len(s)
    pal = True

    for i in range(n/2)
        if s[i] != s[n-i-1]: # the moment it's false
           pal = False       # set pal and
           break             # drop out of the loop

    return pal

或者,不使用布尔变量:

^{pr2}$

为了好玩,你也可以尝试更简单的方法:

def palindrome(s):
  return s[::-1] == s

(留给读者关于如何工作的练习)

你总是检查每个字符。一旦你确定了结果,你需要尽快回来。在

相关问题 更多 >