我需要帮助来了解该回文功能正在做什么

时间:2018-11-23 13:50:08

标签: 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

1 个答案:

答案 0 :(得分:0)

要使此可怕的代码至少能够正常工作,您需要删除一些干扰或无用的行,并将一行移至末尾:

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()函数。