上QQ阅读APP看书,第一时间看更新
2.13.1 while循环
while语句会检查一个(或者一组)判断条件,如果结果为True,相应的代码块会被执行,执行结束之后重新开始新一轮的判断;如果判断的结果继续为True,则循环继续,否则循环终止。
在数学中,一个正整数的阶乘是所有小于及等于该数的正整数的积,0的阶乘为1,自然数n的阶乘写作n!。我们看看如何用while循环计算指定的正整数的阶乘。
def factorial(n): result = 1 while n >= 1: result = result * n n = n - 1 return result print(factorial(5))
执行结果如下:
120
这个函数有很多需要改进的地方,比如不能计算0的阶乘、没有容错机制,等等,但是我们可以从这段简化的逻辑中清楚while的用法。
while循环的判断条件,可以直接设置为True,这样我们就可以做到无限次的循环。
while True: name = input('\nWhat is your name?\n') print('Hi ' + name + '!')
执行结果如下:
What is your name? Mac Hi Mac! What is your name? Ema Hi Ema! What is your name?
这种做法在一些需要长期运行的程序中比较常见。但有些时候,我们的本意并不是要做无限循环,而是因为疏忽,忘记更新条件值,造成条件判断一直为True,形成无限循环,造成bug。