我需要帮助破译这个回文函数在做什么

2024-06-13 23:17:21 发布

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

我通过YouTube自学Python,不知道这是怎么回事。
有人能告诉我这是怎么回事吗

def palin(x):
    palin = input("word; ")
    x = len(palin)
    y = x - 1
    i = 0
    while i < y:
        if palin[i] == palin[y]:
            i = i + 1
            y = y - 1
            print("is palindrome")
            print(True)
            break
        else:
            print("Is not palindrome")
            print(False)
            break
    return None

Tags: trueinputlenifyoutubeisdefelse
1条回答
网友
1楼 · 发布于 2024-06-13 23:17:21

要使这段可怕的代码至少起作用,您需要删除一些干扰或无用的行,并将一行移到末尾:

def palin(x):
    palin = input("word: ")
    x = len(palin)
    y = x - 1
    i = 0
    while i < y:
        if palin[i] == palin[y]:
            i = i + 1
            y = y - 1
        else:
            print("Is not palindrome")
            return
    print("is palindrome")

最初,i是第一个字母的索引(位置),y是最后一个字母的索引。这些位置上的符号在while循环中反复检查是否相等,并且在每次成功检查后i增加y减少,因此将检查下一对“相反”符号:

        + -+ -+ -+ -+ -+
        | r | a | d | a | r |
        + -+ -+ -+ -+ -+
          ↑               ↑
          i               y        ←     - Initial positions
              ↑       ↑
              i       y            ←     - Next positions

如果所有的相等测试都通过了(如我的图片所示),那么else分支就不会被引入,所以文本字符串"is palindrome"就会被打印出来。
在相反的情况下,else分支执行操作,打印字符串"Is not palindrome"return语句立即完成palin()函数

相关问题 更多 >