【发布时间】:2014-05-31 06:57:07
【问题描述】:
我是新手,刚开始阅读 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 循环如何工作的争议,而在第二个示例中,它一直执行到条件为假为止。 请指教如何理解,如果不提条件是真还是假,为什么程序在true bool中执行循环一次,在false bool中执行第二次?
【问题讨论】:
-
n!=1表示“n 不等于 1”。因此,如果 n=0 或 n 不是 1,则为真。当它为真时,循环将继续。循环实际上会一直持续到 n=1。 -
我不是真正的蟒蛇人。其实根本不知道。但是我把它作为一个编程逻辑问题来回答。
标签: python while-loop