循环语句 - while
大家好,这个章节我们来讲讲 Python 中的循环语句。我们生活中经常会遇到反复做同一件事的情况,比如交通工具每天按时发车、四季交替等等,程序中的循环语句就可以帮我们解决这种问题。
简介
在日常生活中很多问题都无法一次解决,比如一年中依次按顺序出现春夏秋冬这四个季节,每年季节的变换都重复着春夏秋冬这个过程。
有些事物必须周而复始地运转才能保证其存在的意义。例如,公交车、地铁等交通工具必须每天在同样的时间往返于始发站和终点站之间。
类似这样的反复做同一件事的情况,称为循环。
在生活中,我们有很多重复的事情。比如,四季交替,每年都重复这个过程;再比如,公交车每天往返于两个站点之间,反复执行这件事。这种反复进行的动作,在编程中就是循环的应用。
循环主要有两种类型:
- 重复一定次数的循环,称为计次循环。 比如跑步五公里,每公里就是一个计次单位。
- 直到条件不满足时才停止重复执行的循环,称为条件循环。 比如直到跑不动为止,这没有具体的跑量,结束跑步的条件是跑不动了。
我们可以把循环分为两种类型。第一种是计次循环,就像我们跑步 5 公里,每公里就是一个循环次数,固定次数的循环。第二种是条件循环,比如你跑步直到体力不支为止,或者公交车直到晚上 11 点才停止,循环的结束是根据条件来判断的。
程序中的循环
循环语句允许执行一个语句或语句块多次。
当有重复运行一个代码块的需求时,不需要也不能多次复制来实现,有时候事先都无法知道什么时候需要循环结束,所以复制多次来实现基本是不可能的。
在编程中,我们遇到的很多需求,都是一些重复性的操作。如果每次都手动写相同的代码,不仅麻烦,而且容易出错。循环语句就帮我们解决了这个问题:它可以让程序在满足条件的情况下,重复执行某段代码,直到条件不成立为止。
Python 提供了两种类型的循环可以应对不同的使用场景。
for-in循环: 计次循环while循环: 条件循环
Python 提供了两种常用的循环方式,分别是:for-in 循环适合计次循环。while 循环适合条件循环。
下图是大多数编程语言中循环语句的一般形式
大多数编程语言中循环语句的一般形式是这样的。下面我们来详细解释一下这个过程。
在程序开始之后,会进入一个判断(或者是先执行一个语句后再进入判断),判断条件成立的时候就会再次执行语句块,执行完成该语句块之后会再进行判断条件是否符合,不符合时就会结束循环,否则一直循环执行下去。
说明:在其他语言中(例如,C、C++、Java 等),条件循环还包括 do…while 循环,但
是,在 Python 中没有 do…while 循环。
开始时,程序进入循环体,执行循环中的代码执行语句。每次执行完循环体之后,都会检查一个条件。如果条件为真,程序会回到循环体开始的地方,再次执行语句,直到条件不再成立。如果条件为假,则跳出循环,结束循环的执行,程序继续向下走。
循环的作用
- 提高代码复用性,减少代码冗余
- 遍历序列(字符串,元组,列表,字典等)
循环的最大优势就是可以让我们避免重复的代码,提高代码的复用性。比如,我们需要对一个列表中的每个元素进行操作,使用循环就能轻松搞定。另外,循环还可以用来遍历序列,比如字符串、元组、列表、字典等。这样,你就能一次性处理所有数据,而不需要手动一个个处理。
循环的构成要素
- 初始化语句:一条或多条语句,用于完成一些初始化工作。初始在循环开始之前执行。
- 循环条件:一般是一个布尔表达式,这个表达式能决定是否执行循环体。
- 循环体:这个部分是循环的主体,如果循环条件允许,这个代码块将被重复执行。
- 迭代语句:这个部分在每次执行循环体结束后,对循环条件求值之前执行,通常用于控制循环条件中的变量向趋近于结束条件改变。
上面四个部分只是一般分类,并不是每个循环中都非常清晰地分出这几个部分。
一般来说,循环语句包含四个部分:初始化语句用于初始化一些变量,通常在循环开始前执行。循环条件这是一个布尔表达式,它决定了循环是否继续。如果条件为真,循环继续执行;如果为假,循环结束。循环体即需要反复执行的代码块。迭代语句在每次执行完循环体后,会修改一些变量,以便在下一次判断条件时,能够逐步接近结束条件。不过,这四个部分并不是所有循环都会都很明显。比如在 while 循环中,初始化语句和迭代语句往往不太明显。
while 循环
在日常的生活中有时候循环的次数通常不会在刚开始就知道,而是满足条件之后就停止循环。
如有一路公交车不是固定时间间隔发车,而是在人数满足多少个之后就发车,一直到晚上的 11 点准时收工,那么没有到 11 点的话就会一直重复,直到条件不满足时才结束的循环,称为条件循环。
只要条件为真,这种循环会一直持续下去,通常指的是 while 循环。
在我们的生活中,很多时候我们并不知道具体循环多少次,而是依赖某个条件来判断是否继续循环。比如公交车直到乘客人数满足条件才发车,或者你跑步直到体力不支才停止,这些都是典型的条件循环。while 循环就是这种类型的循环,它只要条件为真,就会一直重复执行,直到条件不成立时停止。
while 循环的语法
while 条件表达式:
循环体
当条件表达式的返回值为真时,则执行循环体中的语句,执行完毕后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。
while 循环的语法很简单,在 while 关键字后面写上条件表达式,跟上冒号,然后下方缩进 4 个空格循环体写循环体的逻辑。意思就是,只要条件表达式的值为真,循环体就会一直执行,执行完后会重新判断条件,直到条件不成立时跳出循环。
while 循环实战
实战 1: 求 1~10 之间所有整数的乘积。
# 保存结果的变量
result = 1
# 循环控制变量
n = 2
# 开始循环
while n <= 10:
# 计算乘积
result *= n
# 改变循环变量向结束条件趋近
n += 1
# 输出结果
print("1~10的乘积为:", result)
下面我们通过几个实战来演练一下 while 循环如何应用。假设我们要计算 1 到 10 之间所有整数的乘积。在这个例子中,初始化计算结果 result 为 1, n 从 2 开始,然后每次在循环中计算结果 result 的值就变成了乘上 n之后的结果。计算完之后 n 的值再加 1。接下来就进入下一次循环。这里循环的条件设置的是 n 小于等于 10。所以这个循环会一直到 n 超过 10 为止。最后得到的 result 就是 1 到 10 之间整数的乘积。
实战 2: 输入密码,直到密码输入正确,输出 登录成功。
password = "password" # 设置正确的密码
input_password = ""
while input_password != password:
input_password = input("请输入密码: ")
print("密码正确,登录成功!")
接下来我们来实现一个简单的密码输入系统,用户需要一直输入密码直到正确为止。在这里,while 循环会一直让用户输入密码,直到输入的密码与预设的正确密码一致为止。这就是一个典型的条件循环。
实战 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
最后我们再来写一个行酒令小游戏。这个游戏需要找出 1 到 100 之间,所有包含数字 7 或是 7 的倍数的数字。在这里,我们使用 while 循环遍历 1 到 100 的数字,判断每个数字是否包含 7 或者是 7 的倍数,符合条件就输出。这样,我们就能在游戏中跳过这些数字。
总结
- 程序中的循环
- 循环的作用
- 循环的构成要素
- while 循环
今天我们学习了关于 while 循环的内容。简单来说:循环是用来处理那些需要重复执行的操作的。while 循环适用于那些在一开始不确定循环次数,而是根据条件判断是否继续的情况。我们还通过实战例子,学习了如何计算乘积、实现密码验证以及找出符合条件的数字。掌握了 while 循环后,你会发现很多重复性的任务变得更加简单,也能帮助你写出更高效的代码。