Skip to content

循环语句 while

循环语句-while

简介

在日常生活中很多问题都无法一次解决,比如一年中依次按顺序出现春夏秋冬这四个季节,每年季节的变换都重复着春夏秋冬这个过程。

有些事物必须周而复始地运转才能保证其存在的意义。例如,公交车、地铁等交通工具必须每天在同样的时间往返于始发站和终点站之间。

类似这样的反复做同一件事的情况,称为循环。

循环主要有两种类型:

  • 重复一定次数的循环,称为计次循环。 比如跑步五公里,每公里就是一个计次单位。
  • 直到条件不满足时才停止重复执行的循环,称为条件循环。 比如直到跑不动为止,这没有具体的跑量,结束跑步的条件是跑不动了。

程序中的循环

循环语句允许执行一个语句或语句块多次。

当有重复运行一个代码块的需求时,不需要也不能多次复制来实现,有时候事先都无法知道什么时候需要循环结束,所以复制多次来实现基本是不可能的。

Python 提供了两种类型的循环可以应对不同的使用场景。

  • for-in 循环: 计次循环
  • while 循环: 条件循环

下图是大多数编程语言中循环语句的一般形式

uml diagram

在程序开始之后,会进入一个判断(或者是先执行一个语句后再进入判断),判断条件成立的时候就会再次执行语句块,执行完成该语句块之后会再进行判断条件是否符合,不符合时就会结束循环,否则一直循环执行下去。

说明:在其他语言中(例如,C、C++、Java 等),条件循环还包括 do…while 循环,但 是,在 Python 中没有 do…while 循环。

循环的作用

  • 提高代码复用性,减少代码冗余
  • 遍历序列(字符串,元组,列表,字典等)

循环的构成要素

  • 初始化语句: 一条或多条语句,用于完成一些初始化工作。初始在循环开始之前执行。
  • 循环条件: 一般是一个布尔表达式,这个表达式能决定是否执行循环体
  • 循环体: 这个部分是循环的主体,如果循环条件允许,这个代码块将被重复执行。
  • 迭代语句: 这个部分在每次执行循环体结束后,对循环条件求值之前执行,通常用于控制循环条件中的变量向趋近于结束条件改变。

上面四个部分只是一般分类,并不是每个循环中都非常清晰地分出这几个部分。

while 循环

在日常的生活中有时候循环的次数通常不会在刚开始就知道,而是满足条件之后就停止循环。

如有一路公交车不是固定时间间隔发车,而是在人数满足多少个之后就发车,一直到晚上的11点准时收工,那么没有到11点的话就会一直重复,直到条件不满足时才结束的循环,称为条件循环。

只要条件为真,这种循环会一直持续下去,通常指的是 while 循环。

while 循环的语法

while 条件表达式: 
    循环体

当条件表达式的返回值为真时,则执行循环体中的语句,执行完毕后,重新判断条件表达 式的返回值,直到表达式返回的结果为假时,退出循环。

while 循环实战

实战1: 求 1~10 之间所有整数的乘积。

# 保存结果的变量
result = 1
# 循环控制变量
n = 2
# 开始循环
while n <= 10:
    # 计算乘积
    result *= n
    # 改变循环变量向结束条件趋近
    n += 1

# 输出结果
print("1~10的乘积为:", result)

实战2: 输入密码,直到密码输入正确,输出 登录成功

password = "password" # 设置正确的密码
input_password = ""

while input_password != password:
    input_password = input("请输入密码: ")

print("密码正确,登录成功!")

实战3: 在行酒令中,有一个数 7 小游戏,游戏参与者依次报数,但需要跳过所有包含 7 或 7 的整数倍的数字,编写程序找出 1~100 范围内所有符合该条件的数字,方便在游戏中跳过。

# 循环变量实始化
n = 1
# 循环条件
while n<=100:
    # 数字对7求模为0,则表示该数字是7的倍数
    # 将数字转换为字符串类型,使用成员运算符判断字符7是否在字符串中,检查包含关系
    if n % 7 == 0 or "7" in str(n):
        # 输出满足条件的数字
        print(n)
    # 改变循环变量趋近于结束条件
    n += 1