Python程序流程控制语句:while循环


while循环

Python使用while循环来处理满足一定条件进行的循环,while循环一般不用来处理可迭代对象,while循环语句可以实现无限循环。

while循环的基本结构

while循环常用来处理满足一定条件的循环,语法如下:

while condition:
    statements
    ……
else:
	statements

每循环一次都会对condition进行判断,condition返回值为True时进入while循环执行statements,condition返回值为False时,则不执行while下的statements,执行else下的statements,其中else可以省略。如果condition返回值一直为True,while循环成为无限循环,也叫"死循环"。while循环执行流程图如图:

在这里插入图片描述

示例如下:

例:统计1~100之间奇数的个数

i = 1 # 开始值
count = 0 # 统计频数
while i <= 100: # 结束条件
	if i % 2 != 0: # 如果满足不能被2整除的条件
		count += 1 # count加1
		i += 1 # 增减量,如果没有增减量则i=1一直成立,成为死循环
	print('1~100之间有{}个奇数'.format(count))

1~100之间有50个奇数

注意:while循环的三要素:开始值,结束条件,增减量。如果缺少增减量,开始值不会发生变化,结束条件会永远返回True,此时while会成为无限循环。

嵌套使用while循环

Python允许在while循环内部使用while循环。例如打印九九乘法表,示例如下:

a = 1  # 外层循环的开始值
while a < 10:  # 外层循环的结束条件
    b = 1  # 内层循环的开始值
    while b <= a:  # 内层循环的结束条件
        print('%d*%d=%2d' % (a, b, a * b), end=' ')  # 打印,打印完后不换行
        b += 1  # 内层循环的增减量
    print()  # 内层结束后进行换行
    a += 1  # 外层循环的增减量

运行后输出的结果如下:

1*1= 1 
2*1= 2 2*2= 4 
3*1= 3 3*2= 6 3*3= 9 
4*1= 4 4*2= 8 4*3=12 4*4=16 
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

for循环和while循环都可以实现循环功能,但是for循环常用于循环可迭代对象,也就是结尾已知的情况。而while循环常用于结尾未知的情况。这两种循环都可以嵌套使用,但是需要注意嵌套循环的效率不是很高,嵌套循环实际上进行的是笛卡尔积运算,如果循环的次数比较多时等待时间会比较长。

无限while循环

某些情况下需要使用无限循环也就是死循环,使用while循环可以实现这一需求。只要将while后的条件永远固定为一个真值即可,示例如下:

import time

while True:
    print('这是一个无限循环')
    time.sleep(1)

输出结果:

这是一个无限循环
这是一个无限循环
这是一个无限循环
这是一个无限循环
这是一个无限循环
....

在编辑器中无限循环无法自动停止,只用通过手动停止,在PyCharm编辑器中可以使用快捷键Ctrl+C停止循环。

循环控制语句

为了能够更好的控制循环,在for循环和while循环中可以使用break和continue语句对循环进行控制。

break语句

break语句用于跳出当前循环,即提前结束循环,else也会被跳过。示例如下:

# 统计1~100之间奇数的个数
i = 1  # 开始值
count = 0
while True:  # 结束条件为True
    if i % 2 != 0:
        count += 1
    i += 1  # 增减量
    if i > 100:  # 满足if条件执行break语句
        break  # 跳出循环
else:
    print('while循环结束!')  # else也会被跳过,该句不执行
print('while循环由break语句跳出,else未执行!')
# while循环由break语句跳出,else未执行!
print(count)

运行结果:

while循环由break语句跳出,else未执行!
50

注意:break语句也可以使用在嵌套循环中,当使用在嵌套循环的内层循环中时仅从内层循环中跳出,不会影响外层循环继续运行。

continue语句

continue语句用于跳过本次循环,继续进行下一次循环,示例如下:

# 计算1~100之间能被3整除的数的和
total = 0
for i in range(1, 101):
    if i % 3 != 0:  # 条件:不能被3整除
        continue  # 如果满足以上条件就跳出本次循环,进行下一次循环
    total += i
print(total)

输出结果:

1683

猜你喜欢

转载自blog.csdn.net/shield911/article/details/124208264