Python基础03-循环结构

零、文章目录

Python基础03-循环结构

1、循环简介

(1)循环是什么
  • 程序是为了解决实际问题的,实际问题中存在着重复动作,那么程序中也应该有相应的描述,这就是循环
(2)循环的作用
  • 让代码高效的重复执行
(3)循环的分类
  • 在Python中,循环结构分为while和for两种。

2、while循环

(1)基本语法
while 条件:条件成立重复执行的代码1条件成立重复执行的代码2......
'''
while循环三步走:
① 定义一个计数器,一般为i = 0或者i = 1
② 编写循环条件,如while i <= 100:
③ 在循环体内部(有缩进)更新计数器的值举个栗子:循环输出100遍老婆大人,我错了
'''
# 定义一个计数器
i = 1
# 2、编写循环条件
while i <= 100:# 4、执行要循环打印的代码print('老婆大人,我错了!')# 3、在循环体内部(有缩进),更新计数器的值i += 1
(2)循环过程
  • 初始状态
  • 循环条件
  • 循环体(要重复做的事情)
  • 为下次循环作准备
'''
举个栗子:循环打印输出1-5
Debug工具有两步:
① 打断点
② 启动调试 => step over工具使用Debug调试工具,了解while循环执行流程:
第一步:代码都是从上往下一行一行执行,所以先执行i = 1这一行代码
第二步:执行到while i <= 5这一行,对变量i进行判断,判断是否满足循环条件,如果满足,则继续向下执行,如果不满足,则
while循环执行结束,继续向下执行;由于 1 <= 5,所以执行到循环体的内部,输出i = 1,然后进行i += 1操作,此时i = 2
第三步:执行了i += 1以后,返回到while i <= 5位置,判断i是否小于5,2 <= 5,条件成立,继续往循环内部执行
....
直到i = 6时,条件不成立,则循环结束
'''
# 1、定义一个计数器
i = 1
# 2、编写一个循环条件
while i <= 5:# 编写要循环输出的代码print(i)# 3、在循环体内部(缩进)更新计数器的值i += 1
(3)案例
  • 案例1:计算1-100累加和
'''
求1-100累加的结果,sum = 1 + 2 + 3 + 4 + 5 + ... + 97 + 98 + 99 + 100
sum = 5050
需求分析:
① 使用while循环输出1-100
② 定义一个变量,如sum = 0,在1-100循环的过程中,每循环1次往sum变量中追加一个元素值
i = 1,sum = 0 + 1
i = 2,sum = 0 + 1 + 2
i = 3,sum = 0 + 1 + 2 + 3
...
i = 100,sum = 0 + 1 + 2 + 3 ... + 97 + 98 + 99 + 100
'''
# 第一步:定义一个计数器
i = 1
# 第四步:定义变量,如sum = 0
sum = 0
# 第二步:编写循环条件
while i <= 100:# 第五步:把每次得到的变量i的值累加到变量sum中sum += i# 第三步:在循环体内容更新计数器的值i += 1
# 第六步:当所有循环(100次循环)结束后,输出最终结果sum
print(sum)
  • 案例2:计算1-100偶数累加和
'''
偶数:在整数中,能被2整除的数字都称之为叫偶数;不能被整除的数字都称之为叫做奇数!
0 2 4 6 8 10都是偶数
1 3 5 7 9 11都是奇数
案例:求1-100之间所有偶数的和,sum = 2 + 4 + 6 + 8 + 10 ...
需求分析:
第一步:使用while循环输出1-100
第二步:判断哪些数字为偶数,如果是偶数则进行累加到变量sum = 0中
关键点:如何判断一个数字是偶数,判断这个数字是否能被2整除
数字变量 % 2 == 0,能被除尽
'''
# 1、定义一个计数器
i = 1
# 4、定义一个变量sum = 0,用于接收所有偶数的和
sum = 0
# 2、编写循环条件
while i <= 100:# 5、如何获取1-100之间,哪些数字为偶数if i % 2 == 0:sum += i# 3、在循环体内部更新计数器的值i += 1
# 6、当循环结束,则输出最终的结果
print(sum)

3、while中continue与break

(1)break与continue
  • break和continue是循环中满足一定条件退出循环的两种不同方式
  • 举例:一共吃5个苹果,吃完第一个,吃第二个…,这里"吃苹果"的动作是不是重复执行?
  • 情况一:如果吃的过程中,吃完第三个吃饱了,则不需要再吃第4个和第5个苹果,即是吃苹果的动作停止,这里就是break控制循环流程,即终止此循环
  • 情况二:如果吃的过程中,吃到第三个吃出一个大虫子…,是不是这个苹果就不吃了,开始吃第四个苹果,这里就是continue控制循环流程,即退出当前一次循环继而执行下一次循环代码
(2)break关键字
  • break:表示终止整个循环结构
'''
在循环中,有这样一个关键字叫做break,代表终止整个循环结构
'''
# 1、定义一个计数器
i = 1
# 2、编写循环条件
while i <= 5:# 4、添加一个判断条件if i == 4:print('已经吃饱了,后面的苹果不吃了!')breakprint(f'正在吃第{i}个苹果!')# 3、在循环体内部更新计数器的值i += 1
  • 输出
正在吃第1个苹果!
正在吃第2个苹果!
正在吃第3个苹果!
已经吃饱了,后面的苹果不吃了!
(3)continue关键字
  • continue:表示退出当前一次循环继而执行下一次循环代码
'''
在循环中,有这样一个关键字叫做continue,代表中止本次正在执行的循环结构,继而进入下一次循环
'''
# 1、定义一个计数器
i = 1
# 2、编写循环条件
while i <= 5:# 4、添加一个判断条件if i == 3:print('不好,有大虫,这个苹果不吃了!')# 特别注意:在while循环中,continue关键字之前一定要手工更新一下计数器,否则就是一个死循环i += 1continueprint(f'正在吃第{i}个苹果!')# 3、在循环体内部更新计数器的值i += 1
  • 输出
正在吃第1个苹果!
正在吃第2个苹果!
不好,有大虫,这个苹果不吃了!
正在吃第4个苹果!
正在吃第5个苹果!

4、死循环

(1)死循环是什么
  • 在编程中一个靠自身控制无法终止的程序称为“死循环”。
'''
什么是死循环呢?记住:一个通过自身控制无法终止的循环结构就被称之为死循环!
死循环产生的两种场景:
① 因为程序编写错误造成的死循环,目前遇到两种情况:
while循环三步走,丢弃了最后一步,更新计数器,则会造成死循环
在while循环中,使用continue关键字之前没有更新计数器的值,也会造成死循环
② 因为业务的需要,人为设计的死循环
基本语法:
while True:需要一直被执行的代码,可以缩进放在此位置
特别说明:死循环本身没有任何意义,如果想让其有意义必须要结合input()输入语句
'''
while True:print('你是风儿我是沙,缠缠绵绵到天涯...')
(2)猜数字案例
'''
需求:计算机从1 ~ 10之间随机生成一个数字,然后提示输入数字,如果我们输入的数字与随机数相等,则提示恭喜你,答对了。如果输入的数字比随机数大,则提示,猜大了。反之,则提示猜小了,一共有3次机会。
需求分析:
第一步:从1-10之间生成一个随机数字(要用到随机数)
第二步:使用循环,循环3次
第三步:进行条件判断,相等、比随机数大、比随机数小 => if多分支结构
while:while:break只能终止离它最近的循环结构,而没有办法终止所有循环
'''
# 1、让计算机从1-10之间随机生成一个数字
import random
randnum = random.randint(1, 10)# 2、使用while实现死循环
while True:# 3、在循环体内部,提示用户输入要猜的数字usernum = int(input('请输入您要猜的数字:'))# 4、进行条件判断if usernum == randnum:print('恭喜您,猜对了')breakelif usernum > randnum:print('很抱歉,猜大了')else:print('很抱歉,猜小了')
  • 输出
请输入您要猜的数字:5
很抱歉,猜大了
请输入您要猜的数字:3
很抱歉,猜大了
请输入您要猜的数字:1
恭喜您,猜对了

5、for循环结构

(1)基本语法
for 临时变量 in 数据容器:重复执行的代码1重复执行的代码2......
'''
在Python代码中,循环结构一共有两大关键字:while循环 和 for循环
对于循环次数已知的情况,适合使用while循环(因为while循环有计数器)
对于循环次数未知的情况,如数据容器(字符串、列表、元组、字典、集合统称数据容器)的遍历,推荐使用for循环
所以for循环其实是专门用于实现对数据容器的遍历操作
什么是遍历操作?简单来说就是把数据容器中的数据一个一个查询出来的过程,我们就称之为遍历!基本语法:
for 临时变量 in 数据容器:print(临时变量)
执行原理:
① 首先判断数据容器中有多少个元素,则for循环就要循环多少次
② 每次循环时,系统会自动将遍历得到的字符放入临时变量(临时变量一般起名叫做i)中,打印这个变量就相当于输出字符串中的
每一个字符
'''
str1 = 'mynameisly'
for i in str1:print(i)
  • 输出
m
y
n
a
m
e
i
s
l
y
(2)range函数
  • Python2 () 函数返回的是列表,而在Python3中 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
  • 基本语法:
range(stop)
range(start, stop[, step])start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是 [0, 1, 2, 3, 4] 没有 5
step:步长,默认为1。例如:range(0,5) 等价于 range(0, 5, 1)
'''
问题:for循环也是循环,能不能实现固定循环多少次,比如循环10次
答:默认情况下,for循环只能用于遍历数据容器。但是如果一定想要达到这个效果,可以使用range()方法range(5) 等价于 range(0, 5, 1),从0开始,到5结束(不包含5),每次前进1步
range(1, 11, 2) 生成一个容器,从1开始,每次前进2步,1 3 5 7 9
'''
# 使用for循环 + range()生成从0到4
for i in range(5):  # range(0, 5, 1)print(i)
  • 输出
0
1
2
3
4
(3)案例
  • 案例1:计算1-100累加和
'''
需求:使用for循环求1-100累加的和
'''
# 1、定义一个变量sum = 0,用于接收1-100累加的结果
sum = 0
# 2、编写一个for循环,从1循环到100
for i in range(1, 101):  # 只顾不顾尾sum += i
# 3、当循环结束,累加结束
print(sum)
  • 案例2:计算1-100偶数累加和
'''
观察偶数特点:
① 能被2整除
② 相邻的偶数与偶数之间,差2位,2 4 6 8 10 12 14 ...
'''
# 第一种解法
# sum = 0
# for i in range(1, 101):
#     if i % 2 == 0:
#         sum += i
# print(sum)# 第二种解法
sum = 0
for i in range(2, 101, 2):  # 2 4 6 8sum += i
print(sum)

6、for中的continue与break

(1)break与continue
  • break和continue是循环中满足一定条件退出循环的两种不同方式
(2)break关键字
  • break:表示终止整个循环结构
'''
break和continue是循环中满足一定条件退出循环的两种不同方式
记住:
break:满足一定条件,则终止整个循环结构
continue:满足一定条件,则中止本次循环,继而进入下一次循环
'''
# 1、定义一个字符串
str1 = 'mynameisly'
# 2、需求:遇到字符e则终止整个循环结构
for i in str1:# 添加一个判断条件,判断i是否等于字符'e'if i == 'e':print('遇到字符e则终止整个循环结构')breakprint(i)
(3)continue关键字
  • continue:表示退出当前一次循环继而执行下一次循环代码
'''
break和continue是循环中满足一定条件退出循环的两种不同方式
记住:
break:满足一定条件,则终止整个循环结构
continue:满足一定条件,则中止本次循环,继而进入下一次循环
'''
# 1、定义一个字符串
str1 = 'mynameisly'
# 2、需求:遇到字符e则中止本次循环,继而进入下一次循环
for i in str1:# 添加一个判断条件,判断i是否等于字符'e'if i == 'e':print('遇到字符e则中止本次循环,继而进入下一次循环')continue  # 强调:for循环中的continue不需要更新计数器!print(i)
(4)案例
'''
案例:用for循环实现用户登录
① 输入账号和密码
② 判断账号和密码是否正确(username='admin',password='admin888'),必须要同时匹配
③ 登录仅有三次机会,超过3次会报错
④ 如果用户登录失败,则提示用户名错误还是密码错误
⑤ 获取剩余的登录次数
'''
# 第五步:添加一个变量
trycount = 0
# 第一步:编写一个循环,只能循环3次
for i in range(3):# 第六步:手工更新登录次数trycount += 1# 第二步:接收账号与密码username = input('请输入您的账号:')password = input('请输入您的密码:')# 第三步:判断账号是否正确if username == 'admin':# 第四步:在账号正确的基础上,在判断密码是否正确if password == 'admin888':print('恭喜您,登录成功')breakelse:print('很抱歉,您的密码输入有误,请重新输入!')print(f'您还剩余{3-trycount}次登录机会!')else:print('很抱歉,您的账号输入有误,请重新输入!')print(f'您还剩余{3 - trycount}次登录机会!')

7、for循环中的else结构

(1)基本语法
for 临时变量 in 序列:重复执行的代码... 
else:循环正常结束之后要执行的代码
'''
在Python中,while循环/for循环都可以结合else语句结构,基本语法:
while 循环条件:pass
else:当循环正常结束后,要执行的代码!for 临时变量 in 数据容器:pass
else:当循环正常结束后,要执行的代码!问题1:什么情况代表正常结束?什么情况又是非正常结束?
答:在整个循环过程中,只要没有执行break关键字,循环都代表正常结束!问题2:当循环正常结束后,else语句中的代码会被执行多少次?
答:只会被执行1次
'''
# 1、定义一个字符串
str1 = 'mynameisly'
# 2、使用for循环对str1进行遍历操作
for i in str1:# 3、添加一个判断条件,如果字符 == 'e',终止整个循环if i == 'e':print('遇到字符e则终止整个循环结构')breakprint(i)
else:print('当循环正常结束后,else语句中的缩进代码会自动被执行1次!')
(2)案例
'''
案例:用for循环实现用户登录
① 输入账号和密码
② 判断账号和密码是否正确(username='admin',password='admin888'),必须要同时匹配
③ 登录仅有三次机会,超过3次会报错
'''
# 第一步:编写一个循环,只能循环3次
for i in range(3):  # 0 1 2# 第二步:提示用户输入要登录的账号与密码username = input('请输入您的账号:')password = input('请输入您的密码:')# 第三步:对账号与密码进行判断,判断账号是否等于admin且密码是否等于admin888if username == 'admin' and password == 'admin888':print('恭喜您,登录成功!')breakelse:print('很抱歉,您的账号或密码输入有误,请重新输入!')
else:print('很抱歉,您的3次登录机会已用完,请10分钟以后再试!')

8、综合案例:报数字游戏(数7游戏)

(1)游戏规则
  • 一些同学从1开始报数,当需要报出的数字尾数是7或者该数字是7的倍数时,则该同学跳过这个数字,不进行报数。所有同学都参与游戏后,游戏结束。如输入学生数量为50,游戏结束后,报数的同学数量为39。
(2)代码实现
'''
报数字(数7游戏)
一些同学从1开始报数,当需要报出的数字尾数是7或者该数字是7的倍数时,则该同学跳过这个数字,不进行报数。所有同学都参与游戏后,游戏结束。如输入学生数量为50,游戏结束后,报数的同学数量为39。
假设班级中一共有15个同学:
1 2 3 4 5 6 过 8 9 10 11 12 13 过 15
需求分析:
① 提示用户手工输入班级中同学的数量
② 使用for循环,循环班级中的每一个同学编号(1 - 50)
③ 关键点:如何判断这个编号是7的倍数或者尾数为7呢(17、27、37)?
if i % 7 == 0   7的倍数
if i % 10 == 7  尾数为7   17 % 10 = 7  27 % 10 = 7  37 % 10 == 7
④ 满足条件③则执行continue跳过操作
⑤ 定义变量,用于计数,统计报数的同学
'''
# 第一步:提示用户手工输入班级中同学的数量
num = int(input('请输入班级中同学的数量:'))  # 50
count = 0
# 第二步:使用for循环,从1开始,循环到num
for i in range(1, num + 1):# 第三步:如何判断这个编号是7的倍数或者尾数为7呢?if i % 7 == 0 or i % 10 == 7:continue# 第四步:使用count += 1进行计数count += 1
# 第五步:当循环结束,打印count的值就代表参与数数的同学数量
print(f'游戏结束,一共有{count}个同学,参数计数!')

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

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

相关文章

加油站“变身”快充站,探讨充电新模式——安科瑞 顾烊宇

摘要&#xff1a;新能源汽车规模化发展的同时&#xff0c;充电不便利的痛点愈发明显。在未来的新能源汽车行业发展当中&#xff0c;充电的矛盾要远远大于造车的矛盾&#xff0c;解决好充电的问题成为电动汽车行业发展的一个突出问题。解决充电补能问题&#xff0c;重要的方式之…

LangChain(0.0.340)官方文档十:Retrieval——Retrievers(检索器)

LangChain官网、LangChain官方文档 、langchain Github、langchain API文档、llm-universe 文章目录 一、Vector store-backed retriever1.1 基础示例1.1.1 从文本创建Vector store1.1.2 从documents创建Vector store1.1.3 MMR搜索1.1.4 设置相似性分数阈值1.1.5 指定 top k 1.…

分库分表以后,如何实现扩容?

在实际开发中&#xff0c;数据库的扩容和不同的分库分表规则直接相关&#xff0c;今天我们从系统设计的角度&#xff0c;抽象了一个项目开发中出现的业务场景&#xff0c;从数据库设计、路由规则&#xff0c;以及数据迁移方案的角度进行讨论。 从业务场景出发进行讨论 假设这…

msvcrtd.dll下载安装方法,解决msvcrtd.dll找不到的问题

在这篇文章中&#xff0c;我们将详细讨论msvcrtd.dll文件的下载安装方法&#xff0c;并分析出现找不到msvcrtd.dll的情况及解决方法。如果你遇到了与msvcrtd.dll相关的问题&#xff0c;本文将为你提供全面且详细的解决方案。 一.什么是msvcrtd.dll文件 首先&#xff0c;让我们…

透明PP专用UV胶水粘接PP材料高效率的提升生产效率

使用透明PP专用UV胶水粘接PP材料是提高生产效率的方法。以下方法&#xff0c;可以助您在生产中实现高效的PP材料粘接&#xff1a; ​1.选用合适的透明PP专用UV胶水 选择经过专门设计用于透明PP的UV胶水。这种胶水具有透明性&#xff0c;能保证粘接后的清晰度和外观。 2.自动…

vue中预览pdf的方法

使用vue-pdf 备注&#xff1a;这里只介绍了一页的pdf <div class"animation-box-pdf"><pdf :src"http://xxxx" /> </div>import Pdf from vue-pdf // src可以是文件地址url&#xff0c;也可以是文件流blob&#xff08;将blob转成url&a…

W25N01GV 芯片应用

项目中处于成本考虑&#xff0c;要把Nor Flash换成低成本的Nand Flash。 这里总结下芯片应用。 总体概述&#xff1a; 1&#xff09;W25N01&#xff08;NandFlash&#xff09;和W25Q&#xff08;Nor Flash&#xff09;的操作大不一样。 NandFlash擦除以块&#xff08;128KB&…

Java系列-ConcurrentHashMap构造方法

1.无参 什么都没做 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V>implements ConcurrentMap<K,V>, Serializable {private static final float LOAD_FACTOR 0.75f;public ConcurrentHashMap() {} } 2.带初始容量 tableSizeFor方法的实…

外包干了3年,技术退步明显。。。

前言 简单说下我的情况吧&#xff01;普通本科的科班生&#xff0c;19年的时候通过校招进了一家小自研&#xff0c;工资还凑合&#xff0c;在里面带了一年多&#xff0c;公司没了&#xff0c;疫情期间找工作很麻烦&#xff0c;后面就开始自己近3年的外包生涯&#xff0c;这三年…

如果你找不到东西,请先确保你在正确的地方寻找

之前我们在几篇文章中描述了如何进行”思想”调试&#xff0c;今天的文章我将不会这样做。 因为下面的编程错误大部分人都会遇到&#xff0c;如果你看一眼下面的代码&#xff0c;你不会发现有什么问题&#xff0c;这仅仅是因为你的的大脑只给你希望看到的&#xff0c;而不是那…

多线程 (上) - 学习笔记

前置知识 什么是线程和进程? 进程: 是程序的一次执行,一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间&#xff0c;一个进程可以有多个线程&#xff0c;比如在Windows系统中&#xff0c;一个运行的xx.exe就是一个进程。 线程: 进程中的一个执行流&#xff0…

seaborn库图形进行数据分析(基于tips数据集)

Seaborn 是一个基于 matplotlib 的数据可视化库&#xff0c;可以用来绘制各种统计图表&#xff0c;包括散点图、条形图、折线图、箱线图等。Seaborn 提供了一些用于美化图表的默认样式和颜色主题&#xff0c;使得生成的图表更具有吸引力。下面是一些 Seaborn 库的常用功能和用法…

TrustGeo代码理解(六)utils.py

代码链接:https://github.com/ICDM-UESTC/TrustGeo 一、导入常用库和模块 from __future__ import print_function from distutils.version import LooseVersion from matplotlib.scale import LogisticTransform import numpy as np import torch import warnings import t…

《Linux C编程实战》笔记:文件读写

Linux c下文件读写可用creat&#xff0c;open&#xff0c;close&#xff0c;read&#xff0c;write&#xff0c;lseek等函数。对于跨平台的程序还是用C标准库的fopen等。 open #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open …

ubuntu安装kazam,并解决视频在windows下无法播放的情况

ubuntu安装kazam 安装 sudo apt-get install kazamkazam录制视频在windows下无法播放解决办法 由于编码格式的原因&#xff0c;kazam在ubuntu下录制视频格式虽是MP4&#xff0c;但是在Windows下无法播放&#xff0c;效果无法展示&#xff0c;ppt也没得素材可用。 安装 ffmp…

Python高级算法——人工神经网络(Artificial Neural Network)

Python中的人工神经网络&#xff08;Artificial Neural Network&#xff09;&#xff1a;深入学习与实践 人工神经网络是一种模拟生物神经网络结构和功能的计算模型&#xff0c;近年来在机器学习和深度学习领域取得了巨大成功。本文将深入讲解Python中的人工神经网络&#xff…

AtCoder Beginner Contest 326

A - 2UP3DOWN (atcoder.jp) AC代码: #include<bits/stdc.h> #define endl \n //#define int long long using namespace std; int x,y; void solve() {cin>>x>>y;if(x<y){if(y-x<2) cout<<"Yes"<<endl;else cout<<"…

Linux——进程创建与进程终止

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、进程创建1、fork函数初识2、fork函数返回值3、写时拷贝4、fork常规用法5、fork调用失败的…

【产品经理】产品增效项目落地,项目反哺产品成长

产品和项目是相辅相成的关系&#xff0c;产品的规范、成熟&#xff0c;为项目的快速落地提供支撑&#xff0c;项目的落地反哺产品&#xff0c;促进产品的成长成熟。 软件工程的初期是&#xff0c;我们需要什么&#xff0c;就立项项目&#xff0c;通过项目实现需要。 随着项目的…

什么是前端国际化(internationalization)和本地化(localization)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…