我正在通过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
答案 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()
函数。