HOWTO · Python
具有多个条件的 Python while 循环
本教程演示了如何在多个条件下使用 while 循环
本页内容
Python 中的 while 循环会只要 while 语句中的条件(即测试条件)保持为真就持续运行代码,条件一旦变为假便立即停止。当用户事先不知道需要执行的迭代次数时,就会使用这种循环。while 循环与多个条件结合使用的情形有很多。
在本教程中,我们将了解如何使用带多个条件的 while 循环。
使用逻辑运算符 and 和 or 创建带多个条件的 Python while 循环
逻辑运算符 and 要求两个条件同时成立。它从左到右求值条件,一旦某个条件为假便停止求值,因为组合结果已经确定;只有当第一个条件为真时,它才会继续检查第二个条件。如果两个条件中有任何一个未满足或不为真,则该语句将被视为假,代码不会运行。
示例:
x = 10
y = 20
initial_count = 0
while initial_count < x and initial_count < y:
print(f"count: {initial_count}, x = {x}, y = {y}")
initial_count += 1
输出:
count: 0, x = 10, y = 20
count: 1, x = 10, y = 20
count: 2, x = 10, y = 20
count: 3, x = 10, y = 20
count: 4, x = 10, y = 20
count: 5, x = 10, y = 20
count: 6, x = 10, y = 20
count: 7, x = 10, y = 20
count: 8, x = 10, y = 20
count: 9, x = 10, y = 20
在本方法中,我们首先创建两个变量 x 和 y,分别等于 10 和 20。然后将计数初始化为零。完成这些之后,我们启动 while 循环,如上面的代码所示,它构成两个条件。循环只有在两个条件同时为真时才会继续运行。十次迭代之后,计数达到 10,此时第一个条件 initial_count < x 为假,因此即使第二个条件 initial_count < y 仍然成立,循环也会结束。这就是最后打印的一行显示计数为 9 的原因。
接下来看逻辑运算符 or。or 运算符同样从左到右求值条件,但一旦某个条件为真便停止求值,因为组合结果已经确定。使用该运算符的好处是,即使两个条件语句中只有一个为真,代码也会执行。只有当两个语句均为假时,代码才不会运行。
示例:
x = 10
y = 20
initial_count = 0
while initial_count < x or initial_count < y:
print(f"count: {initial_count}, x = {x}, y = {y}")
initial_count += 1
输出:
count: 0, x = 10, y = 20
count: 1, x = 10, y = 20
count: 2, x = 10, y = 20
count: 3, x = 10, y = 20
count: 4, x = 10, y = 20
count: 5, x = 10, y = 20
count: 6, x = 10, y = 20
count: 7, x = 10, y = 20
count: 8, x = 10, y = 20
count: 9, x = 10, y = 20
count: 10, x = 10, y = 20
count: 11, x = 10, y = 20
count: 12, x = 10, y = 20
count: 13, x = 10, y = 20
count: 14, x = 10, y = 20
count: 15, x = 10, y = 20
count: 16, x = 10, y = 20
count: 17, x = 10, y = 20
count: 18, x = 10, y = 20
count: 19, x = 10, y = 20
请注意,在本方法中,计数达到 10 时循环并不会停止。此时第一个条件变为假,但第二个条件 initial_count < y 仍为真,而 or 只需要一个为真的条件。因此循环会继续,直到计数达到 20、两个条件均为假为止,最后打印的一行显示计数为 19。
使用逻辑运算符 not 创建带多个条件的 Python while 循环
还有一个逻辑运算符可以让我们在多个条件下使用 while 循环,那就是 not 运算符。该运算符用于返回布尔语句的相反值。例如,如果布尔状态是 not False,则返回真;如果布尔语句是 not True,则返回假。
示例:
x = 10
y = 20
initial_count = 0
while not initial_count > x and not initial_count > y:
print(f"count: {initial_count}, x = {x}, y = {y}")
initial_count += 1
输出:
count: 0, x = 10, y = 20
count: 1, x = 10, y = 20
count: 2, x = 10, y = 20
count: 3, x = 10, y = 20
count: 4, x = 10, y = 20
count: 5, x = 10, y = 20
count: 6, x = 10, y = 20
count: 7, x = 10, y = 20
count: 8, x = 10, y = 20
count: 9, x = 10, y = 20
count: 10, x = 10, y = 20
在这里,while 条件意味着只要初始计数不大于 x 且不大于 y,循环就会运行。中间的 and 遵循与前面相同的规则:由于在计数达到 10 之前的每一步,第一个带 not 的语句都为真,因此第二个带 not 的语句也会被求值。循环在计数为 11 时停止,此时 not initial_count > x 变为假,and 短路,不再检查第二部分。由于 x 是两个上限中较小的那个,结束循环的正是它,最后打印的一行显示计数为 10。换一种写法,not A and not B 与 not (A or B) 相同,因此这个循环会在计数不大于任何一个上限时运行。
正如我们在这个例子中在 while 循环里只取了两个条件一样,还可以添加更多这样的语句。