Skip to content

while 循环

while 是计算机的一种基本循环模式。当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。while 语句的一般表达式为:while(表达式){循环体}

循环的作用就是让指定的代码重复的执行,while 循环最常用的应用场景就是让执行的代码按照指定的次数重复执行。

基本语法

while

案例:重复执行

需求 —— 打印 5 遍 我喜欢 Python

python
# while 循环
i = 0  # 限制条件
while i < 5:  # 循环申明 判断条件
    print('我喜欢 Python !')  # 程序执行的内容
    i += 1  # 限制条件

注意:while 语句以及缩进部分是一个完整的代码块

先看简化版的流程图

如果看不懂,再看完整版的流程图

思考 —— 如果要求打印 100 遍怎么办?

死循环

由于程序员的原因,忘记在循环内部修改循环的判断条件,导致循环持续执行,程序无法终止!

python
i = 0
while i < 5:
    print('我喜欢 Python !')
    # i += 1  # 忘记给限制条件就会造成死循环

循环计算

打印小星星

在控制台连续输出五行 *,每一行星号的数量依次递增

*
**
***
****
*****

使用字符串 * 打印

python
# 1. 定义一个计数器变量,从数字 1 开始,循环会比较方便
row = 1

while row <= 5:
    print("*" * row)

    row += 1

循环打印小星星

假设 Python 没有提供字符串的 * 操作拼接字符串

在控制台连续输出五行 *,每一行星号的数量依次递增

*
**
***
****
*****

开发步骤

  1. 完成 5 行内容的简单输出
  2. 分析每行内部的 * 应该如何处理?

每行显示的星星和当前所在的行数是一致的

嵌套一个小的循环,专门处理每一行中 的星星显示

python
row = 1

while row <= 5:

    # 假设 python 没有提供字符串 * 操作
    # 在循环内部,再增加一个循环,实现每一行的 星星 打印
    col = 1

    while col <= row:
        print("*", end="")

        col += 1

    # 每一行星号输出完成后,再增加一个换行
    print("")

    row += 1
详细信息

里面的三种内容等价

python
print('*', end='')
print()

print('*', end='')
print('*', end='')
print()

print('*', end='')
print('*', end='')
print('*', end='')
print()

print('*', end='')
print('*', end='')
print('*', end='')
print('*', end='')
print()

print('*', end='')
print('*', end='')
print('*', end='')
print('*', end='')
print('*', end='')
print()
python
row = 1
col = 1
while col <= row:
    print("*", end="")
    col += 1
print()

row = 2
col = 1
while col <= row:
    print("*", end="")
    col += 1
print()

row = 3
col = 1
while col <= row:
    print("*", end="")
    col += 1
print()

row = 4
col = 1
while col <= row:
    print("*", end="")
    col += 1
print()

row = 5
col = 1
while col <= row:
    print("*", end="")
    col += 1
print()
python
row = 1
while row <= 5:
    col = 1
    while col <= row:
        print("*", end="")
        col += 1
    print()
    row += 1

案例:九九乘法表

需求 输出 九九乘法表,格式如下:

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

开发步骤

  1. 打印 9 行小星星
*
**
***
****
*****
******
*******
********
*********
  1. 将每一个 * 替换成对应的行与列相乘
python
# 定义起始行
row = 1

# 最大打印 9 行
while row <= 9:
    # 定义起始列
    col = 1

    # 最大打印 row 列
    while col <= row:
        # end = "",表示输出结束后,不换行
        # "\t" 可以在控制台输出一个制表符,协助在输出文本时对齐
        print("%d * %d = %d" % (col, row, row * col), end="\t")

        # 列数 + 1
        col += 1

    # 一行打印完成的换行
    print("")

    # 行数 + 1
    row += 1