Python笔记(三)—— Python循环语句

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

ff9adc8db7f748a6bd68d85f60779bf9.png

循环在程序中同判断一样,也是广泛存在的,是非常多功能实现的基础:

ef03ffbddcdb49e496d7f4745eb442c7.gif          65a74e8929474080ba4caa2ce1dc38c9.png

                                                                                           bilibili循环轮播图

循环和判断一样,同样是程序中最基础最核心的逻辑功能

3.1  while循环的基础应用

while循环的语法格式:

while 条件:

        条件满足时,做的事情1

        条件满足时,做的事情2

        ...(省略)...

只要条件满足,会无限循环执行

例如:

小美心软,只要表白100次,就会成功

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

cbe498eda966407bb55be9f077dda780.png   

对于上面的案例,我们可以使用while循环语句简单搞定:

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

cb966637881543839802f7895eb41691.png

while循环注意点:

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

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

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

3.2  练习案例:求1-100的和

aca6a7ce5f274111a2169afeca6240e7.png

i = 1
sum = 0
while i <= 100:sum += ii += 1print(f"1-100的累加和是:{sum}")

输出结果:

812581a0c88149ed89b5daf139aefed6.png

3.3  练习案例:while循环猜数字

4b55d3eaca0f4fd6a6cd13a0abdd7ed5.png

代码源码,可以运行:

import random
num = random.randint(1,100)# 定义一个变量,记录总共猜测了多少次
count = 0# 通过一个布尔类型的变量,做循环是否继续的标记
flag = True
while flag:guess_num = int(input("请输入你猜测的数字:"))count += 1if guess_num == num:print("猜中了")# 设置为False就是终止循环的条件flag = Falseelse:if guess_num > num:print("你猜的大了")else:print("你猜的小了")print(f"你总共猜了{count}次")

输出结果:

87e370e0e1424ebfa8759be594d758f4.pngl

3.4  while循环的嵌套应用

852ea591dd054dfcb024dd80dd55780c.png

生活中的嵌套循环

程序中的循环:

while  条件1:

        条件1满足时,做的事情1

        条件1满足时,做的事情2

        ...(省略)...

        

        while 条件2:

                条件2满足时,做的事情1

                条件2满足时,做的事情2

                ...(省略)...

while循环的嵌套使用

# 外层:表白100天的控制
# 内层:每天的表白都送10只玫瑰花的控制
i = 1
while i <= 100:print(f"今天是第{i}天,准备表白......")j = 1while j <= 10:print(f"送给小美第{j}朵玫瑰花")j += 1print("小美,我喜欢你")i += 1print(f"坚持到第{i-1}天,表白成功")

注意:

1. 同判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进(基于空格缩进来决定层次关系)

2. 注意条件的设置,避免出现无限循环。

3.5 while循环练习案例:九九乘法表

补充知识1:print输出不换行

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

9b16a51f7ada45ba81e97b3f9fe7aab6.png

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

f1629b8dbfc14c76aa36e6e1d1e4fd4a.png

如图,在print语句中,加上end = '  ' 即可输出不换行了

补充知识2:制表符 \t 

在字符串中,有一个特殊符号 \t ,效果等同于在键盘上按下:tab键

它可以让我们的多行字符串进行对齐

比如:

d2da385179fb4499be9c3dc82eb3706e.png

练习案例:

cc1ab170fd06429894937633ade34a34.png

分析:

1. 控制行的循环 i <= 9

2. 控制每一行输出的循环 j <= i

3. 输出不换行:print( j * i , end =  ' ')

4. 对齐:\t

代码源码,可以运行:

# 定义外层循环的控制变量
# i:行数  j:列数
i = 1
while i <= 9:# 定义内层循环的控制变量j = 1while j <= i:# 内层循环的print语句,不要换行,通过\t制表符进行对齐print(f"{j} * {i} = {j * i}\t ", end = '' )j += 1i += 1# print空内容,就是输出一个换行print()

输出结果:

56289c70a6364631ac4e989ff1181e64.png

3.6  for循环的基础语法

1.基础语法

除了while循环语句外,Python同样提供了for循环语句

两者能完成的功能基本差不多,但仍有一些区别:

  • while循环的循环条件是自定义的,自行控制循环条件
  • for循环是一种 “轮询” 机制,是对一批内容进行 “逐个处理”

4ee7f368f6034ec782480f7ffe2bf9c9.jpeg

for循环基础语法:

for  临时变量  in  待处理数据集:

        循环满足条件时执行的代码

name = "itheima"for x in name:#将name的内容,挨个取出赋予x临时变量#就可以在循环体内对x进行处理print(x)

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

for循环注意点:

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

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

所以,理论上讲,python的for循环无法构建无限循环(被处理的数据集不可能无限大)

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

3.7  for循环练习案例:数一数有几个a

4310b852955f414fbd78f4c3025d40ea.png

代码源码,可运行:

#统计如下字符串中,有多少个字母a
name = "itheima is a brand of itcast"#定义一个变量,用来统计有多少个a
count = 0#for 循环统计
#for 临时变量 in 被统计的数据for x in name:if x == "a"count += 1print(f"被统计的字符串有{count}个a")

运行结果:

3.8 range语句

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]

演示Python中的range()语句的基本使用:

  • range语法1:range(num)
for x in range(10):print(x)

运行结果:

 

  •   range语法2:range(num1,num2)
for x in range(5,10):
#从5开始,到10结束(不包含10本身)的一个数字序列,数字之间间隔是1print(x)

运行结果:

 

  •  range语法3:range(num1,num2,step)
for x in range(5,10,2):
#从5开始,到10结束(不包含10本身)的一个数字序列,数字之间的间隔是2print(x)

运行结果: 

 

for x in range(10):print("送玫瑰花🌹")

3.9 for循环临时变量作用域

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

如图代码,思考一下:

红框中的print语句,能否访问到变量i?

规范上:不允许

实际上:可以

临时变量,在编程规范上,作用范围(作用域),至限定在for循环内部

如果在for循环外部访问临时变量:

  • 实际上是可以访问到的
  • 在编程规范上,是不允许,不建议这么做的

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

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

3.10 for循环的嵌套应用

同样以向小美表白的案例为例

  • 坚持表白100天
  • 每天送花10束

演示嵌套应用for循环:

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}天,表白成功")

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

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

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

注意:

  • 需要注意缩进,嵌套for循环同样通过缩进确定层次关系
  • for循环和while循环可以相嵌套使用

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

外层循环控制行数,内层循环控制每一行的内容

代码源码,可运行:

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

运行结果:

3.12 continue和break

思考:无论是while循环还是for循环,都是重复性的执行特定操作

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

  • 暂时跳过某次循环,直接进入下一次
  • 提前退出循环,不再继续

对于这种场景,Python提供continue和break关键字

用以对循环进行临时跳过直接结束

continue

continue关键字用于:中断本次循环,直接进入下一次循环

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

for i in range(1,100):语句1continue语句2

上面代码:

  • 在循环中,遇到continue就结束当次循环,进行下一次
  • 所以,语句2是不会执行的

应用场景:

在循环中,因为某些原因,临时结束本次循环

演示循环语句的中断控制:break和continue

for i in range(1,6):print("语句1")continueprint("语句2")

运行结果:

continue在嵌套循环中的应用

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

演示continue的嵌套循环:

for i in range(1,6):print("语句1")for j in range(1,6):print("语句2")#这个continue只能控制内层for循环,对外层的for循环是没有任何影响的#语句3是压根不会执行的,语句1,2,4都可以执行continueprint("语句3")print("语句4")

break

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

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

for i in range(1,100):语句1break语句2语句3

上面代码:

  • 在循环中,遇到break就结束循环了
  • 所以,执行了语句1后,直接执行语句3了

演示循环中断语句break:

for i in range(1,101):print("语句1")breakprint("语句2")print("语句3")

运行结果:

break在嵌套循环中的应用

break关键字同样只可以控制:它所在的循环结束

演示break的嵌套循环:

for i in range(1,6):print("语句1")for j in range(1,6):print("语句2")#这个break同时只能控制内层for循环,对外层的for循环是没有任何影响的#直接输出语句1,语句2(只执行1次,因为遇到了break),然后输出语句4breakprint("语句3")print("语句4")

运行结果:

总结:

  1. continue的作用是:中断所在循环的当次执行,直接进入下一次
  2. break的作用是:直接结束所在的循环
  3. ⚠️注意事项:
  • continue和break,在for和while循环中作用一致
  • 在嵌套循环中,只能作用在所在的循环上,无法对上层(外层)循环起作用

3.13 循环综合案例:发工资

代码源码,可运行:

#定义账户余额变量
money = 10000
#for循环对员工发放工资
for i in range(1,21):import randomscore = random.randint(1,10)if score < 5:print(f"员工{i}绩效分{score},不满足,不发工资,下一位")#continue跳过发放continue#if判断余额足不足if money >= 1000:money -= 1000print(f"员工{i},满足条件发放工资1000,公司账号余额:{money}")else:print("余额不足,当前余额:{money}元,不足以发工资,不发了,下个月再来")#break结束发放break

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XXE-XML实体注入漏洞

目录 1.xml基础 1.1什么是xml 1.2xml文档结构 1.3 什么是DTD 1.4 什么是实体 1.5 什么是外部实体 2.xxe漏洞 2.1xxe漏洞基本介绍 2.2xxe漏洞的危害 经典漏洞案例分析 3.xxe漏洞挖掘和利用 3.1. 识别潜在的XML入口 3.2. 检查XML处理逻辑 3.3. 构造试探Payload 常…

Redis核心数据结构之字典(一)

字典 概述 字典又称为符号表(symbol table)、关联数组(associative array)或映射(map)&#xff0c;是一种保存键值对(key-value pair)的抽象数据结构&#xff0c;在字典中&#xff0c;一个键(key)可以和一个值(value)进行关联(或者说将键映射为值)&#xff0c;这些关联的键和…

OpenText Availability——适用于 Windows 和 Linux 服务器的高可用性和灾难恢复解决方案

OpenText Availability——适用于 Windows 和 Linux 服务器的高可用性和灾难恢复解决方案 连续复制&#xff0c;最大限度地减少数据丢失快速故障转移&#xff0c;最大限度地减少停机时间可忽略的性能影响支持物理、虚拟和基于云的系统平台 停机从多种途径侵扰 IT 企业。 从相…

最佳牛围栏(二分 + 前缀和)

最佳牛围栏 原题链接&#xff1a;https://www.acwing.com/problem/content/104/ 题目 思路 我们发现若是枚举答案的话&#xff0c;那么我们判断是否存在一个平均值大于等于mid&#xff0c;如果最优解是x&#xff0c;那么mid < x的时候&#xff0c;必然可以找到一段&#x…

算法---双指针练习-1(移动零)

移动零 1. 题目解析2. 讲解算法原理数组划分&#xff0c;数组分块&#xff08;核心思想&#xff09;如何做到 3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 数组划分&#xff0c;数组分块&#xff08;核心思想&#xff09; dest一般初始化为-1&#x…

计算机设计大赛 深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的视频多目标跟踪实现 …

16、电源管理入门之驱动Runtime PM管理

目录 1. 框架介绍 1.1 为什么需要Runtime PM Framework? 1.2 系统框架图 2. Drivers 3. Runtime PM core 4. power domain framework 5. runtime pm的sysfs 6参考: Runtime PM管理也就是设备驱动里面的电源管理,即设备驱动结构体里面的struct dev_pm_ops,只控制设…

bun实现HTTP服务器

Bun 提供了原生 Bun.serve API。它实现了 fetch 以及Node.js的 http 和 https 模块。 这些模块已被重新实现&#xff0c;以使用 Bun 的快速内部 HTTP 基础设施。随意直接使用这些模块;像 Express 这样依赖于这些模块的框架应该开箱即用。有关详细的兼容性信息&#xff0c;请参阅…

【HarmonyOS】ArkTS-箭头函数

箭头函数 箭头函数是 比普通函数 更简洁 的一种函数写法 () > {}() > {// 函数体 }let 函数名 () > {// 函数体 }let 函数名 () > {// 函数体 } 函数名(实参1, 实参2)let 函数名 (形参1: 类型, 形参2: 类型) > {// 函数体 } 函数名(实参1, 实参2)let 函数名 …

变频器学习

西门子变频器 SINAMICS V20 入门级变频器 SINAMICS G120C

《Trustzone/TEE/安全-实践版》介绍

第一章&#xff1a;课程说明和准备 课程介绍和说明 资料准备 为什么使用qemu_v8环境&#xff1f; 为什么选择香橙派开发板&#xff1f; optee qemu_v8环境展示 香橙派optee环境展示 第二章&#xff1a;Qemu环境搭建 ubuntu20.04的安装(virtualboxubuntu20.04) 搭建optee qem…

利用“定时执行专家”循环执行BAT、VBS、Python脚本——含参数指定功能

目录 一、软件概述 二、VBS脚本执行设置 三、触发器设置 四、功能亮点 五、总结 在自动化办公和日常计算机任务管理中&#xff0c;定时执行脚本是一项非常重要的功能。今天&#xff0c;我将为大家带来一款名为“定时执行专家”的软件的评测&#xff0c;特别是其定时执行VB…

Unity3D学习之XLua实践——背包系统

文章目录 1 前言2 新建工程导入必要资源2.1 AB包设置2.2 C# 脚本2.3 VSCode 的环境搭建 3 面板拼凑3.1 主面板拼凑3.2 背包面板拼凑3.3 格子复合组件拼凑3.4 常用类别名准备3.5 数据准备3.5.1 图集准备3.5.2 json3.5.3 打AB包 4 Lua读取json表及准备玩家数据5 主面板逻辑6 背包…

寻找旋转排序数组中的最小值[中等]

优质博文IT-BLOG-CN 一、题目 已知一个长度为n的数组&#xff0c;预先按照升序排列&#xff0c;经由1到n次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组nums [0,1,2,4,5,6,7]在变化后可能得到&#xff1a; 【1】若旋转4次&#xff0c;则可以得到[4,5,6,7,0,1,2…

【自然语言处理六-最重要的模型-transformer-下】

自然语言处理六-最重要的模型-transformer-下 transformer decoderMasked multi-head attentionencoder和decoder的连接部分-cross attentiondecoder的输出AT(Autoregresssive)NAT transformer decoder 今天接上一篇文章讲的encoder 自然语言处理六-最重要的模型-transformer-…

吴恩达机器学习笔记十五 什么是导数 计算图 大型神经网络案例

假设函数 J(w)w^2&#xff0c;当 w3 时&#xff0c; J(w)3*39 当我们给w增加一个很小的量时&#xff0c;观察J(w)如何变化。 例如 w30.001&#xff0c; 则J&#xff08;w&#xff09;9.006001&#xff0c;因此当w3且增加一个变化量 ε 时&#xff0c;J(w)将会增加 6ε&#x…

Northwestern University-844计算机科学与技术/软件工程-机试指南【考研复习】

本文提到的西北大学是位于密歇根湖泊畔的西北大学。西北大学&#xff08;英语&#xff1a;Northwestern University&#xff0c;简称&#xff1a;NU&#xff09;是美国的一所著名私立研究型大学。它由九人于1851年创立&#xff0c;目标是建立一所为西北领地地区的人服务的大学。…

泛型 --java学习笔记

什么是泛型 定义类、接口、方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;称为泛型类、泛型接口&#xff0c;泛型方法、它们统称为泛型 可以理解为扑克牌中的癞子&#xff0c;给它什么类型它就是什么类型 如…

[Buuctf] [MRCTF2020]Transform

1.查壳 64位exe文件&#xff0c;没有壳 2.用64位IDA打开 找到主函数&#xff0c;F5查看伪代码 从后往前看&#xff0c;有一个判断语句&#xff0c;是两个数组进行比较的&#xff0c;我们双击byte_40F0E0查看里面的内容 所以能够推出byte_414040的内容&#xff0c;byte_4140…

音频库及分析软件介绍

搞音频的兄弟必须要看一下的&#xff0c;俗话说&#xff0c;工欲善其事必先利其器&#xff0c;好的音频分析软件&#xff0c;对于音频分析工程师来讲&#xff0c;可谓是非常重要的&#xff0c;下面由小编介绍一下&#xff1a;