gpt4 book ai didi

python - 《如何像计算机科学家一样思考》中的 While 循环

转载 作者:行者123 更新时间:2023-12-01 05:12:08 28 4
gpt4 key购买 nike

我是一个完全的新手,刚刚开始阅读 Think Python 书。在关于迭代的章节中,作者提供了有关 while 循环的示例,如下:

def countdown(n):
while n > 0:
print n
n = n-1
print "Blastoff!"

这很容易理解,打印 n 并当 n=n-1 直到 n>0 成立为止。

但是下一个例子有点不同,我不明白这一点:

def sequence(n):
while n != 1:
print n,
if n % 2 == 0: # n is even
n = n / 2
else: # n is odd
n = n * 3 + 1

n!=1 当且仅当 n=0 或 n=1 时才成立,在本例中,后续计算的结果不可能是 n=0,我们假设 n=0 作为初始输入。假设 n=3计算如下:3,10,5,16,8,4,2,1。

分析这两个例子时我看到了争议:

在示例 1 中,循环一直保持到条件 n>0 为真为止,一旦 n>0 为假,循环就会中断。在示例 2 中,循环一直保持到条件 n!=1 为假为止,一旦 n!=1 变为真,循环就会中断。

观察这两种情况后,我看到了在第一个示例中 while 循环如何工作的争议,while 循环执行到条件为真,而在第二个示例中,它执行到条件为假。请指教如何理解,如果我们不提及条件应该为 true 或 false,为什么程序在 true bool 中执行一次循环,而在 false bool 中执行第二次?

最佳答案

n!=1 表示“n 不等于 1”。因此,如果 n=0 或 n 不是 1,则为 true。当为 true 时,循环将继续。循环将一直持续到实际 n=1。

你说:

as soon as n!=1 becomes true the loop is broken.

没有。这是一个while循环。所以它会循环条件为真。因此,一旦 n!=1 变为 FALSE,循环就会被打破。

我认为你迷失在双重否定中。

关于python - 《如何像计算机科学家一样思考》中的 While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23967332/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com