【万字更新】Python基础教程:第四章_循环语句

原创:公众号 数据说话【万字更新】Python基础教程:第四章_循环语句

前言

循环普遍存在于日常生活中,同样,在程序中,循环功能也是至关重要的基础功能。

一个循环的流程是非常简单的,基于条件的判断,只要满足条件就可以做相应的操作,操作完成后再次判断,如果继续满足条件,那么会继续做相应的操作,那么如此往复的循环下去,直到条件不满足,我们的循环结束了。

为什么学习循环语句

循环在程序中同判断一样,也是广泛存在的,是非常多功能实现的基础,如果没有,日常生活中许多常见的功能都难以实现。

在日常生活中,循环广告牌,批量修图,视频轮播,音乐轮播,图片轮播,大喇叭喊话,动态壁纸,视频监控等等,实现的基础功能就是我们所说的循环了。

那所以我们要明白,循环和判断一样,都是程序最基础最核心的逻辑功能,接下来我们具体学习一下。

while循环的基础语法

学习目标

  • 掌握使用while循环的基础应用

while循环语句

在Python中呢,我们提供了一个叫做while的循环语句,为了理解它,我们现在回顾一下循环的基础流程,对于循环来说他有两个基础的要素:

第一个叫条件,第二个叫操作,只要条件满足就去做相应的操作,操作完成之后再来判断条件,如果继续满足又会继续做相应的操作,直到条件不满足我们的循环就结束了,所以说循环有两个要素:条件和操作,那在我们日常生活中的循环,其实也都是满足这两个要素的要求的。

  • 生活中的循环

    扫描二维码关注公众号,回复: 15136259 查看本文章

每天都去向小美表白,直到成功为止:

这就是一个典型的循环,条件是什么呢?条件就是直到成功为止,也就是如果不成功我就继续去表白。

那可以看到生活中循环的案例呢,其实也都是满足这两个关键的要素的,好那么基于这两个关键要素,在程序中如何使用循环呢?

  • 程序中的循环:

对于while循环,语法是非常简单的,我们首先需要使用一个叫做while的关键字,然后在关键字后面我们给出条件,这个条件应该是什么类型的数据呢?这个条件呢,其实就可以使用比较运算,或者说直接使用布尔类型都可以。

最终的结果必须是布尔,也就是True表示继续运行循环,那么在条件后面加上一个冒号,然后我们在下面写上,循环如果满足条件,应该要做的操作。

 
 
 
 

while条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
(省略).

在这个语法里面,是不是也满足我们所说的两个关键要素条件的设置以及操作的设置?

那么通过这个语法呢,我们就可以在条件满足的时候,去执行相应的操作,然后完成之后再来判断条件如果满足,继续做操作,再判断条件如果还满足,继续再做操作,直到条件不满足我们的循环结束,那这是它的语法,那我们再来看一下,我们找一个具体的案例,看看循环如何去写。

首先假设,小美还是比较心软的,只要我表白100次就会成功,如果不使用循环的话,那可能我们要写上100次,print语句去说小美,我喜欢你,那这是不是很累,很低级啊:

 
 
 
 

print("小美,我喜欢你")
print("小美,我喜欢你")
print("小美,我喜欢你")
...(还有97次)...

对于这个案例的话呢,我们这种循环一改造就会发现超级简单,在while循环中,有条件和对应的操作。

那首先我们看,条件就是i这个变量小于100,只要满足这个条件,我们的循环就会不停地执行下去。

条件有了,操作就是当条件满足的时候,我们输出:小美,我喜欢你。同时把i这个变量加1。

我们可以看到,i这个变量在循环前已经定义了,它的初始值是0,那就是说循环执行一次,“小美,我喜欢你”的输出就会把i +1,就会变成1,第2次i就会变成2,第3次i就会变成3,那可以看到当 i 变成100的时候,是不是就不满足这个条件了,循环就结束了。那么所以说从开始执行到循环结束,我们这个操作是不是会正好执行100次呀,那就是我们向小美表白了100次,这就是循环语句的简单应用了,还是非常简单的。

 
 
 
 

i = 0
while i < 100:
print("小美,我喜欢你")
i += 1

while循环注意点

  1. 1.while的条件需得到布尔类型,True表示继续循环,False表示结束循环

  2. 2.需要设置循环终止的条件,如i += 1配合 i < 100,就能确保100次后停止,否则将无限循环

  3. 3.空格缩进和if判断一样,都需要设置

练习

练习案例:求1-100的和需求:通过while循环,计算从1累加到100的和 提示:

  1. 1.终止条件不要忘记,设置为确保while循环100次

  2. 2.确保累加的数字,从1开始,到100结束

有两个提示要注意,第一终止条件不要忘记设置,我们需要确保while循环循环100次,第二,我们要确保的数字从一开始,到100结束,OK,那么基础的需求我们分析完成之后呢,就自己来写一下代码吧!参考代码如下:

 
 
 
 

sum = 0
i = 1
while i<=100:
sum += i
i += 1

print(f"1-100累加的和是:{sum}")

while循环的基础案例

学习目标

  • 能够使用while循环,完成猜数字案例

猜数字案例

在一小节,我们学习了while循环的基础语法,以及给同学们讲解了一下,求1-100和的基础练习题,那么在本小节,我们再来学习一个while循环的基础案例,去巩固一下我们对while循环的掌握,我们的学习目标很简单,使用while循环去完成一个叫,拆数字的案例的学习了,首先我们来看一下案例的需求:

  • · 设置一个范围1-100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数

  • · 无限次机会,直到猜中为止

  • · 每一次猜不中,会提示大了或小了

  • · 猜完数字后,提示猜了几次

提示:

  • · 无限次机会,终止条件不适合用数字累加来判断

  • · 可以考虑布尔类型本身(True or False)

  • · 需要提示几次猜中,就需要提供数字累加功能

随机数可以使用:

 
 
 
 

import random
num = random.randint(1,100)

提示:首先无限次的机会,那么我们的终止条件,就不再适合在前面使用的数字累加来判断,比如说小于100这样的条件,因为我们的无限次机会,是没有办法用固定的数字来去锁定他的次数的,所以我们可以去考虑使用布尔类型,本身也就是True或者False。 

其次呢,我们需要去提示几轮猜中,那这个功能的实现,就需要我们在猜测的过程中,去提供一个数字累加的功能,这样的话,才能在最终猜完的时候去记录下来。

第三我们如果想生成随机数的话,可以使用python中的random 模块,关于它具体的使用我们在后续会进行详细的讲解,在现在我们先不用管他是什么意思,我们照着写能够使用,能够拿到合适的随机数就可以了,基础的案例需求,给同学们分析完毕,那就让我们来打开Pycharm,去进行代码的编写吧:

 
 
 
 

# 获取范围在1-100的随机数字
import random
num = random.randint(1, 100)
# 定义一个变量,记录总共猜测了多少次
count = 0

# 通过一个布尔类型的变量,做循环是否继续的标记
flag = True
while flag:
guess_num = int(input("请输入你猜测的数字:"))
count += 1
if guess_num == num:
print("猜中了")
# 设置为False就是终止循环的条件
flag = False
else:
if guess_num > num:
print("你猜的大了")
else:
print("你猜的小了")

print(f"你总共猜测了{count}次")

while循环的嵌套应用

学习目标

  • 掌握while嵌套循环基本格式

  • 完成while嵌套循环的应用

while循环的嵌套

生活中的嵌套循环 

我们先来看一下,生活中我们会遇到的嵌套循环。还是以向小美表白为例,我们每天都会去向小美表白,直到成功为止,但是在这个过程里面,我们还有一个具体的细节,就是我每一天去表白的流程,都会送10朵玫瑰,然后再表白,那这种循环你会发现其实它里面有两层循环。

外层循环是每天都去表白,直到成功为止,内层循环就是每天去表白的时候,我都会送10朵玫瑰,那就是我们可以通过一个内层循环,去循环的送出10个玫瑰花就可以了,那所以这是生活中有可能会遇到的,嵌套循环。 

程序中循环内套循环 

那我们再来看一下,在程序中如果要完成这种嵌套循环,它的语法是如何做呢?其实也很简单了,跟我们在学习判断语句中一样,我们的while也是可以去嵌套的,同时它的嵌套也是基于空格缩进的,我们只需要在外层的while循环内,再写一个内层的while循环就可以了,使用空格缩进,去确保他们之间的层次关系,这样就可以让它们嵌套成功啦!

 
 
 
 

while条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
条件1满足时,做的事情3
·(省略).·
while条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
条件2满足时,做的事情3
(省略).

对于刚刚向小美表白的案例,我们来看看如果使用while嵌套循环,那么在代码中你会发现,这里有两层循环,第一层循环是,i<=100,这是表示我要表白100天的控制,那么内层循环写的是j<=10,那这是,每一天都会送10朵玫瑰花的控制。

那可以看到,外层循环进来之后,他说今天是第二天,比如说第一天第二天准备表白,然后再进到内层循环,我们通过这个循环向小美送出10支玫瑰花,送完之后会说小美我喜欢你,可以看见,通过外层内层两层循环,我们就完成了每天都去表白,每天的表白都会送10支玫瑰花,好直到我们两层循环都完全结束,表白就成功了:

表白100天每一天都会送10朵玫瑰花

 
 
 
 

# 外层:表白100天的控制
# 内层:每天的表白都送10只玫瑰花的控制

i = 1
while i <= 100:
print(f"今天是第{i}天,准备表白.....")

# 内层循环的控制变量
j = 1
while j <= 10:
print(f"送给小美第{j}只玫瑰花")
j += 1

print("小美,我喜欢你")
i += 1

print(f"坚持到第{i - 1}天,表白成功")

完成之后呢,我们再来分析一下我们这个内外层啊,这个是外层的控制,控制的是天数,这个是内层的控制,控制是每一天我们送多少支玫瑰花。i是外层的控制变量,j是内层的控制变量,同时我们的控制变量j+=1,这个作用于内层循环,我们这个i+=1作用于外层循环,所以说内外层各有各的控制变量,各有各的作用范围。

while循环的嵌套-注意点

  • 同判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进。

  • 基于空格缩进来决定层次关系

  • 注意条件的设置,避免出现无限循环(除非真的需要无限循环)

while循环的嵌套案例

学习目标

  • 掌握使用while嵌套循环,打印九九乘法表

补充知识-print输出不换行

默认print语句输出内容会自动换行,如下:

 
 
 
 

print("Hello")
print("World")

输出结果:

 
 
 
 

Hello
World

在即将完成的案例中,我们需要使用print语句,输出不换行的功能,非常简单,实现方式如下:

 
 
 
 

print("Hello",end="")
print("World",end="")

 
 

HelloWorld

如上,在print语句中,加上 end="" 即可输出不换行了 ps: end=""是使用的方法传参功能,我们在后面会详细讲解。

补充知识-制表符\t

在字符串中,有一个特殊符号:\t,效果等同于在键盘上按下:tab键。它可以让我们的多行字符串进行对齐。比如:

 
 
 
 

print("Hello World")
print("itheima itcast")

 
 

Hello World
itheima itcast

使用\t,可以对齐

 
 
 
 

print("Hello\tWorld")
print("itheima\titcast")

输出结果:

 
 
 
 

Hello World
itheima itcast

那所以这是一个特殊的小符号,叫做制表符,制表符它的应用还是非常广泛的。

给同学们补充的两个知识点,一个是使用普通的语句,输出不换行,第二个我们让单词也是多行输出,之间能够对齐,使用\t这个字表符好,有了这两个基础,内容知识的补充之后呢,我们现在就可以去完成我们的案例的代码开发了。

练习案例-打印九九乘法表

通过while循环,输出如下九九乘法表内容

提示:

  • 2层循环,外层控制行,内层控制列,

  • 外层循环和内存循环的累加数字变量,用以辅助输出乘法表的数值

参考代码:

 
 
 
 

# 定义外层循环的控制变量
i = 1
while i <= 9:

# 定义内层循环的控制变量
j = 1
while j <= i:
# 内层循环的print语句,不要换行,通过\t制表符进行对齐
print(f"{j} * {i} = {j * i}\t", end='')
j += 1

i += 1
print() # print空内容,就是输出一个换行

这是通过嵌套while循环所完成的九九乘法表的一个打印。那这个九九乘法表呢,也是我们在学习很多语言的时候,特别是学习到嵌套循环的时候,都会去使用一个案例,它的难度不算很难,但多少也需要你认真地去思考它,所以说同学们在课后的话,一定要把这个案例去做一遍,这对于我们去掌握双层循环,或者说多层嵌套循环,以及锻炼一下逻辑思维等方面,都是有非常大的帮助的。

for循环的基础语法

本小节我们来学习一个新的循环机制,叫做for循环,我们for循环主要分成3部分进行讲解,第1部分基础语法,第2部分range语句,第三部分变量作用域,好首先让我们来学习第一部分,for循环的基础语法。

学习目标:

  • for循环基础语法

for循环

除了while循环语句外,Python同样提供了for循环语句。两者能完成的功能基本差不多,但仍有一些区别:

• while循环的循环条件是自定义的,自行控制循环条件 

• for循环是一种”轮询”机制,是对一批内容进行”逐个处理”  好那我们通过下图,来去看看他们之间的区别:

  • while循环

 

对于while循环来说呢,他是有一个条件,你只要条件满足就可以去做操作,那这个是没有任何限制的,只要条件满足就可以做操作,当条件不满足我就结束循环,所以说很简单,这个条件你可以自行的去控制。

  • for循环

 

for循环就是将”待办事项”逐个完成的循环机制,但是,我们的for循环,你会发现他有点不一样了,通过图中可以看到,for循环是对一批内容进行逐个处理,比如说我先处理一下1,它会挨个判断是否有下一个,把1取过来然后对1进行处理,然后把2取过来,然后对2进行处理,把3取过来,对3进行处理,当我4,5,6,7等等都取完之后,再取就会发现,没有下一个了,没有下一个的话,for 循环就结束了。

那所以说,这就是我们所说的for 循环的一种,轮循机制,对内容进行逐个处理,但通俗点说呢,你可以认为 for 循环就是将代办事项,逐个完成的一种循环机制。

for循环语句

for循环其实也可以类比到我们生活中的一些事情,比如我们在生活中你要洗碗的话,你会一个个的洗干净,剥蒜你会一个个剥干净,送快递要一个个送,吃瓜子要一个个吃,以及做一些其他事情,你要一个一个的完成,那你会发现,我们生活中的这些事情,其实就是和for循环是一样的,也就是对代办事项,进行一个一个的处理。

我们来看一下在我们程序中,for循环的语法又是什么样呢,首先他会有一个for关键字,然后我们定义一个临时变量,然后再来一个in关键字,然后再给上一个叫待处理数据集,然后给上一个冒号,他的意思就是,对待处理数据及里面的数据挨个取出,每一次循环,就将当前数据赋予这个临时变量,然后你就可以在循环体里面,去写你的代码了,那当然你也可以使用这个临时变量:

 
 
 
 

for 临时变量 in 待处理数据集:
循环满足条件时执行的代码

从待处理数据集中:逐个取出数据赋值给临时变量 我们实际来看一个例子:

 
 
 
 

# 定义字符串name
name = ”itheima”
# for循环处理字符串
for x in name:
print(x)

可以看出,for循环是将字符串的内容:依次取出所以,for循环也被称之为:遍历循环

 
 
 
 

i
t
h
e
i
m
a

那么所以说for循环,其实也可以叫做遍历循环,因为这种行为,其实相当于把我们字符串里面的字符,挨个遍历处理了一下,或者你也可以认为,遍历也就是依次的意思。

for循环注意点

 
 
 
 

# 定义字符串name name = ”itheima”
# for循环处理字符串
for x in name:
print(x)

同while循环不同,for循环是无法定义循环条件的。

只能从被处理的数据集中,依次取出内容进行处理。

所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大) for循环的语法格式是:

 
 
 
 

for 临时变量 in 待处理数据集:
循环满足条件时执行的代码

for循环的注意点

  1. 无法定义循环条件,只能被动取出数据处理

  2. 要注意,循环内的语句,需要有空格缩进

练习案例:数一数有几个a

定义字符串变量name,内容为:"itheima is a brand of itcast" 通过for循环,遍历此字符串,统计有多少个英文字母:"a",输出如下字符:

 
 
 
 

itheima is a brand of itcast中共含有:4个字母a

提示:

  1. 计数可以在循环外定义一个整数类型变量用来做累加计数

  2. 判断是否为字母"a",可以通过if语句结合比较运算符来完成

 
 
 
 

# 统计如下字符串中,有多少个字母a
name = "itheima is a brand of itcast"

# 定义一个变量,用来统计有多少个a
count = 0

# for 循环统计
# for 临时变量 in 被统计的数据:
for x in name:
if x == "a":
count += 1

print(f"被统计的字符串中有{count}个a")

其实核心就在于两个点,第一个在循环的外部定一个变量,用来统计有多少个字母a,那么在循环内部呢,我们将字符串的内容,一个一个的取出来,赋予一个临时变量叫做x,我们要通过 if ,去判断x是否等于是否和这个a,相等就可以了,那如果内容相等的话,就表明这个x的内容就是a,那我们就可以让,计算器这个count变量加1就行了,好那所以最终我们就统计出来了。

range语句

 
 
 
 

for 临时变量 in 待处理数据集(可迭代对象):
循环满足条件时执行的代码

上边代码是for循环的基础语法,在语法中,in 关键字的后面,我们需要填入带处理的数据集,那这个待处理数据集,严格来说,称之为:可迭代类型,可迭代类型指,其内容可以一个个依次取出的一种类型,包括:

  • 字符串

  • 列表

  • 元组

目前我们只学习了字符串类型,其余类型在后续章节会详细学习它们。

for循环语句,本质上是遍历:可迭代对象。

尽管除字符串外,其它可迭代类型目前没学习到,但不妨碍我们通过学习range语句,获得一个简单的数字序列(可迭代类型的一种)。那么他有三种语法:

  • 语法1:

range(num 获取一个从) 0开始,到num结束的数字序列(不含num本身)如range(5)取得的数据是:[0, 1, 2, 3, 4]

  • 语法2:

range(num1, num2) 获得一个从num1开始,到num2结束的数字序列(不含num2本身)

如,range(5, 10)取得的数据是:[5, 6, 7, 8, 9]

  • 语法3:

range(num1, num2, step) 获得一个从num1开始,到num2结束的数字序列(不含num2本身)数字之间的步长,以step为准(step默认为1)

如,range(5, 10, 2)取得的数据是:[5, 7, 9]

for循环遍历range序列

 
 
 
 

# for循环处理字符串
for i in range(5):
print(i)

输出结果为:

 
 
 
 

0
1
2
3
4

  • range语句的功能是:

获得一个数字序列(可迭代类型的一种)

  • range语句的注意事项:

  • 语法1从0开始,到num结束(不含num本身)    

  • 语法2从num1开始,到num2结束(不含num2本身)

  • 语法3从num1开始,到num2结束(不含num2本身)

步长以step值为准 range的用途很多,多数用在for循环场景

变量作用域

如图代码,思考一下:

 
 
 
 

for i in range(5):
print(i)

print(i)

思考 第二个print语句,能否访问到变量 i ?规范上:不允许 实际上:可以

for循环的变量作用域

 
 
 
 

for 临时变量 in 待处理数据集:
循环满足条件时执行的代码

回看for循环的语法,我们会发现,将从数据集(序列)中取出的数据赋值给:临时变量 为什么是临时的呢?临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部 如果在for循环外部访问临时变量:

  • 实际上是可以访问到的

  • 在编程规范上,是不允许、不建议这么做的

for循环的变量作用域

如果实在需要在循环外访问循环内的临时变量,可以在循环外预先定义

 
 
 
 

i = 0
for i in range(5):
print(i)

print(i)

如图,每一次循环的时候,都会将取出的值赋予i变量。

  • 由于i变量是在循环之前(外)定义的

  • 在循环外访问i变量是合理的、允许的

  • for循环中的临时变量,其作用域限定为:循环内

这种限定:

  • 是编程规范的限定,而非强制限定

  • 不遵守也能正常运行,但是不建议这样做

  • 如需访问临时变量,可以预先在循环外定义它

for循环的嵌套应用

学习目标

  • 掌握for循环的嵌套使用

生活中的嵌套循环

其实跟我们在while循环中所举的例子一样,我们比如每天都去向小美表白,直到成功为止,然后每次表白的流程呢,就是送10朵玫瑰,然后进行表白。

好同样的案例,那么我们再来看一看,如果说啊我们要用放循环嵌套,它的语法呢是什么样呢,其实跟我们while循环是差不多的,也就是在for循环的内部,你再写一个for循环其实就可以了。

程序中的嵌套循环:

同while一样,for循环也支持嵌套使用

 
 
 
 

for 临时变量 in 待处理数据集(序列):
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情N
for 临时变量 in 待处理数据集(序列):
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情N

实际上,这段话的关键在于控制正确的缩进。如果你留意一下内外层的for循环,你会发现它们的缩进不同。外层循环是以4个空格缩进的,而内层循环是以8个空格缩进的。所以,我们可以通过缩进简单地实现循环的嵌套。以小美被表白为例,我们可以使用内外两层循环来实现每天向小美表白并送她10束玫瑰花的操作流程。

 
 
 
 

i = 1
for i in range(1,101):
print(f"今天是向小美表白的第{i}天,坚持.")
for j in range(1,11):
print(f"送给小美的第{j}朵玫瑰花")
print(f"小美,我喜欢你(第{i}天的表白结束)")

print(f"第{i}天,表白成功")

因为通过缩进,确定层次关系

for循环的嵌套注意点

我们目前学习了2个循环,while循环和for循环。

这两类循环语句是可以相互嵌套的,如下,小美表白的案例可以改为:

 
 
 
 

i = 1
for i in range(1,101):
print(f"今天是向小美表白的第{i}天,坚持.")
j = 1
while j <= 10:
print(f"送给小美的第{j}朵玫瑰花")
j+=1
print(f"小美,我喜欢你(第{i}天的表白结束)")
print(f"表白第{i}天,表白成功")

可以自己敲代码体会一下:

 
 
 
 

i = 1
while i <= 100:
print(f"今天是向小美表白的第{i}天,坚持.")
for j in range(1,11):
print(f"送给小美的第{j}朵玫瑰花")
print(f"小美,我喜欢你(第{i}天的表白结束)")
i += 1

print(f"表白第{i-1}天,表白成功")

练习案例-for循环打印九九乘法表

通过for循环,输出如下九九乘法表内容,提示:

  • 2层循环,外层控制行,内层控制列

  • 可使用range语句来得到数字序列进行for循环

  • 内层for循环的range最大范围,取决于当前外层循环的数字

参考代码:

 
 
 
 

"""
演示for循环打印九九乘法表
"""

# 通过外层循环控制行数
for i in range(1, 10):
# 通过内层循环控制每一行的数据
for j in range(1, i + 1):
# 在内层循环中输出每一行的内容
print(f"{j} * {i} = {j * i}\t", end='')

# 外层循环可以通过print输出一个回车符
print()

循环中断 : break和continue

学习目标

  • 掌握使用continue和break关键字控制循环

无论是while循环或是for循环,都是重复性的执行特定操作。

在这个重复的过程中,会出现一些其它情况让我们不得不:

  • 暂时跳过某次循环,直接进行下一次

  • 提前退出循环,不在继续

对于这种场景,Python提供continue和break关键字用以对循环进行临时跳过和直接结束。

continue

首先让我们学习第一个continue关键字,continue关键字它的作用在于中断本次循环直接进入下一次,同时它可以用于for和while循环,效果都是一样的。

我们模拟一段场景:

每天都去向小美表白 

送一日三餐,直到成功 

每天送晚餐的时候看小美脸色,今天不高兴就不送了,明天继续 

好我们首先来简单看1段代码,在PPT中呢有一个简单代码放循环中,有语句一和语句2,在他们中间有一个contine,那continue的效果呢就是中断本次循环,所以在代码运行的过程中,我们把语句1执行了之后,当执行到contine的时候,就会把本次循环直接跳过了,然后进行下一次,那也就是我们的语句2呢,他是不会执行到,好那所以对于contine这个关键字啊,它的应用场景也很简单,就是在循环中我们会有某些原因临时的结束本次循环,直接进行下一次的场景。

 
 
 
 

for i in range(1,101):
print(f"追求小美的第{i}天,坚持......")
print("给小美送早饭,比心")
print("给小美送午饭,比心")
if input(f"今天小美的心情好像(0好心情,1坏心情)")=='1':
print("小美心情不好,晚饭不送了,撤退......")
print()
continue
print("给小美送晚饭,送小美回家并表白")
print()

输出结果,当输入0或1时,会有不同的结论

 
 
 
 

追求小美的第1天,坚持......
给小美送早饭,比心
给小美送午饭,比心
今天小美的心情好像(0好心情,1坏心情)1
小美心情不好,晚饭不送了,撤退......

追求小美的第2天,坚持......
给小美送早饭,比心
给小美送午饭,比心
今天小美的心情好像(0好心情,1坏心情)0
给小美送晚饭,送小美回家并表白

追求小美的第3天,坚持......
给小美送早饭,比心
给小美送午饭,比心
今天小美的心情好像(0好心情,1坏心情)

continue在嵌套循环中的应用

continue 关键字只可以控制:它所在的循环临时中断 

如下图:continue只能控制左图编号1的for循环 对编号2的for循环,无影响

break

break关键字用于:直接结束所在循环 

break可以用于:for循环和while循环,效果一致

每天都去向小美表白 

送一日三餐,直到成功 

某天小美说,不要再打扰我了 以后就不再缠着她了 

让我们通过代码来模拟一下追求小美的过程。(以for循环为例,while循环效果一样)通过input输入语句,来决定今天小美的心情(0表示好心情,1表示坏心情)

 
 
 
 

for i in range(1,101):
print(f"追求小美的第{i}天,坚持......")
print("给小美送早饭,比心")
print("给小美送午饭,比心")
if input("如果你是小美,请告诉我你是否明确拒绝(0再观察观察,1不合适拒绝)") == '1':
print("小美拒绝我了,以后不追求小美了。T.T")
break
print("给小美送晚饭,送小美回家并表白")
print()

输出结果:

 
 
 
 

追求小美的第1天,坚持......
给小美送早饭,比心
给小美送午饭,比心
如果你是小美,请告诉我你是否明确拒绝(0再观察观察,1不合适拒绝)0
给小美送晚饭,送小美回家并表白

追求小美的第2天,坚持......
给小美送早饭,比心
给小美送午饭,比心
如果你是小美,请告诉我你是否明确拒绝(0再观察观察,1不合适拒绝)1
小美拒绝我了,以后不追求小美了。T.T

进程已结束,退出代码0

break在嵌套循环中的应用

break关键字同样只可以控制:它所在的循环永久中断 

break只能控制下图编号1的循环 对编号2的循环,无影响

综合案例

学习目标

  • 基于学到的循环知识,完成发工资案例

某公司,账户余额有1W元,给20名员工发工资。

  • 员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元

  • 领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位

  • 如果工资发完了,结束发工资。

提示:

  • continue用于跳过员工,break直接结束发工资

  • if判断余额,不要忘记发完工资后,余额减少1000哦

输出结果:

 
 
 
 

员工12,绩效分3,低于5,不发工资,下一位。
员工13,绩效分1,低于5,不发工资,下一位。
员工14,绩效分4,低于5,不发工资,下一位。
向员工15发放工资1000元,账户余额还剩余2000元
向员工16发放工资1000元,账户余额还剩余1000元
员工17,绩效分2,低于5,不发工资,下一位。
向员工18发放工资1000元,账户余额还剩余0元
工资发完了,下个月领取吧。

参考代码:

 
 
 
 

money = 10000
for i in range(1,21):
import random
score = random.randint(1,10)
if score < 5:
print(f"员工{i},绩效分{score},低于5,不发工资,下一位。")
continue
else:
money -= 1000
print(f"向员工{i}发放工资1000元,账户余额还剩余{money}元")
if money == 0:
print("工资发完了,下个月领取吧。")
break

猜你喜欢

转载自blog.csdn.net/Blue92120/article/details/130607187