软件自动化测试实战解析:基于Python3编程语言
上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。