Python基础-循环

第三章 循环

3.1、循环介绍

  • 有条件的重复做相似的事情
  • Python中循环分为while 和for

3.2、while循环的使用

  • 格式: while 条件: 循环体

  • while 循环的三个必要元素

    • while 关键字
    • 循环条件
    • 循环体
  • 构造循环要想的四件事

    • 初始状态
    • 循环条件
    • 要重复做的事情
    • 循环控制
  • 案例

# 需求:求1-100的累加和# 初始状态
i = 1
sum1 = 0
while i <= 100:# 求累加和# sum1 = sum1 + isum1 += i# 为下一次循环做准备,自增i += 1print('1-100的累加和是%d' % sum1)
# 需求:输出10以内的所有奇数# 初始状态
i = 1
# 循环结束条件
while i <= 10:# 要循环做什么if i % 2 != 0:print(i)# 为下一次循环做准备  自增i += 1
# 需求: 1-100的偶数累加和
# 初始状态:
i = 1
sum1 = 0  # 累加器
# 循环条件
while i <= 100:# 要做什么?if i % 2 == 0:sum1 += i# 为下一次循环做准备  累加i += 1print(f'1-100的偶数累加和是{sum1}')# 练习 :计算 1-20 的奇数累乘积.
# 初始状态
i = 1
mult1 = 1
# 循环条件
while i <= 20:# 要做什么if i % 2 != 0:mult1 *= i# 自增i += 1
print(f'1-20的奇数累乘积是{mult1}')

3.3、continue和break

  • continue :跳出本次循环,进入下一次循环
# continue: 跳出本次循环,继续执行下一次循环(不会影响循环的次数)# 需求: 吃苹果,一个五个.吃到第三个 有个虫子,扔掉第三个,继续吃第四个第五个
# 注意,在循环结构中使用continue要在continue之前添加循环变量的自增,否则可能会造成无法跳出循环(死循环)
i = 1
while i <= 5:if i == 3:print('这个苹果有虫子,给女朋友吃吧')i += 1continueprint(f'我吃了{i}个苹果')i += 1# 写法二
# 可以先进行自增,再进行i的调用,此时,就不用担心continue的问题了
i = 0
while i < 5:i += 1if i == 3:print('这个苹果有虫子,给女朋友吃吧')continueprint(f'我吃了{i}个苹果')# 输出1-10 的数字
# 在循环体中,continue所在的分支中,continue之后不要书写任何代码,永远不可能被执行
i = 1
while i <= 10:print(i)continuei += 1# break 和continue只能用在循环体中
# if True:
#     print('123')
#     break
#     continue
  • break : 结束当前循环,后续循环次数不再执行
# break:跳出循环,终止此次循环之后的所有循环# 吃苹果案例   吃到第三个 吃出半条虫子,后续无心再吃
i = 1
while i <= 5:print(f'我吃了{i}个苹果')if i == 3:print('吃不下了 虫子个太大吃撑了')# break之后的所有代码均不执行breaki += 1print('吃苹果完成')# 输出1-10 十个数字
# 在循环体中,break所在的分支中,break之后不要写任何代码,不可能执行
# i = 1
# while i <= 10:
#     print(i)
#     break
#     i += 1
  • break 和continue 只能在循环体中使用

3.4、死循环

  • 死循环不是bug,是程序的一种特殊运行状态,程序员可以用死循环做很多事情
  • 死循环就是循环条件永远满足的一种循环
# 什么是死循环?  循环条件永远满足,可以持续循环的代码
# 死循环是bug么?  死循环不是bug可以利用死循环做很多事情
# 死循环可以退出么?  可以,死循环就是循环条件永远成立,但是在程序内部可以有很多方法跳出循环,  break# 猜拳游戏  (死循环进阶版)
# 需求:在原来猜拳游戏的基础上,让电脑和玩家进行猜拳,一方达到3分则退出游戏,宣布获胜方,否则游戏持续进行
# 普通循环
# player_score = 0
# computer_score = 0
# while player_score < 3 and computer_score < 3:
#     # 获取玩家拳型
#     player1 = int(input('请输入您要出的拳型:(0 石头  1 剪刀  2 布)'))
#     # 获取电脑随机拳型
#     import random
#     computer = random.randint(0, 2)
#     result = player1 - computer
#     # 拳型比对     # 输出结果
#     if result == -1 or result == 2:
#         player_score += 1
#         print('玩家获胜')
#     elif result == 0:
#         print('平局')
#     else:
#         computer_score += 1
#         print('电脑获胜')
#     print(f'当前比分为{player_score}:{computer_score}')# 死循环
player_score = 0
computer_score = 0
while True:# 获取玩家拳型player1 = int(input('请输入您要出的拳型:(0 石头  1 剪刀  2 布)'))# 获取电脑随机拳型import randomcomputer = random.randint(0, 2)result = player1 - computer# 拳型比对     # 输出结果if result == -1 or result == 2:player_score += 1print('玩家获胜')elif result == 0:print('平局')else:computer_score += 1print('电脑获胜')print(f'当前比分为{player_score}:{computer_score}')if player_score >= 3:print('玩家取得最终胜利')breakif computer_score >= 3:print('电脑取得最终胜利')break

3.5、循环嵌套

  • 循环体中包含其他循环结构的状态叫做循环嵌套
  • 外层循环执行一次,内层循环将全部执行完成
# 需求:锻炼身体:跑步四圈,做深蹲10分钟,此为一组训练,要做三组
# 在循环嵌套中,外层循环执行一次,内层循环全部执行完成
# 做三组训练的初始状态
i = 1
# 做三组训练后退出循环
while i <= 3:print(f'第{i}组训练开始')# 跑圈初始状态j = 1# 跑四圈后退出循环while j <= 4:print(f'我跑了{j}圈')# 内层循环自增变量j += 1print('我做了10分钟深蹲')# 外层循环自增变量i += 1
  • 注意:break 和continue 控制的是当前所在的循环结构
# 需求:锻炼身体:跑步四圈,做深蹲10分钟,此为一组训练,要做三组
# break 和continue 只能控制本身所在的循环结构
# 在循环嵌套中,外层循环的break和cotinue可能会影响内层循环, 但是内层循环中的break和continue不会影响外层循环# 做三组训练的初始状态
i = 1
# 做三组训练后退出循环
while i <= 3:print(f'第{i}组训练开始')# 跑圈初始状态j = 1# 跑四圈后退出循环if  i== 2:print('我女朋友来找我了 先休息一下')i += 1continuewhile j <= 4:print(f'我跑了{j}圈')# 内层循环自增变量if j ==3 and i == 2:print('太累了 休息下')breakj += 1print('我做了10分钟深蹲')# 外层循环自增变量i += 1

3.6、循环嵌套案例:

# 需求:打印五行五列的一个*组成的矩形
"""
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
"""# 打印一行*号,使用while循环实现?
# i = 1
# while i <= 5:
#     print('*', end=' ')
#     i += 1# 使用while循环将刚才打印的* 输出5次,每次分别占用一行
# i 控制外层循环的次数
i = 1
while i <= 5:# j 控制内层循环的次数j = 1while j <= 5:# 打印* 后更换结束符, 防止打印后自动换行print('*', end=' ')j += 1# 一行结束后,强制换行print()i += 1# 结论:外层循环控制的是行数, 内层循环控制的是列数 ,外层循环的i变量就是打印时的行号,内层循环的j变量就是打印列时的列号# 如果现在要打印6行8列的矩阵  i = 6  j = 8
# 使用while语句打印三角形,第一行一个* 第二行两个* .....
"""
*
* *
* * *
* * * *
* * * * *
"""# 外层循环的数量:5 该图形有5行,所以i <= 5
# 内层循环的数量:根据行号进行设定,  第一行 j <= 1  第二行 j <= 2.......i = 1
while i <= 5:j = 1while j <= i:print('*', end=' ')j += 1print()i += 1
# 使用while循环的嵌套打印九九乘法表
"""
1 * 1 = 1
1 * 2 = 2  2 * 2 = 4
.......
"""# 打印一个九行九列的直角三角形
# 外层循环控制行
i = 1
while i <= 9:# 内层循环控制列j = 1while j <= i:# 九九乘法表中,公式规则就是  列 * 行 = 值print(f'{j} * {i} = {i * j}', end='\t')j += 1print()i += 1

3.7、for循环

  • for循环时遍历数据序列,每次获取一个元素,直到元素全部被获取,结束循环。
# for循环的语法结构
"""
for 临时变量 in 数据序列(容器):要重复执行的代码
"""
# 循环逻辑:for循环会依次提取数据序列中的元素,每次提取一个,放入临时变量中储存,在循环体中可以使用临时变量,数据序列中有多少个元素,for循环的循环体将会被执行多少次str1 = 'helloPython'
# 循环遍历str1  遍历:依次提取每一个元素
for i in str1:print(i)# for循环和while循环的区别:
# 1/for循环数据序列,元素提取完成自动停止,不需要使用循环变量
# 2/for循环不需要循环条件,所以也不会有循环条件成立喝不成立的说法
# 3/在开发中我们使用for循环的比例居多,while循环主要是构造死循环结构
# 4/for循环需要配合容器类型(数据序列)进行使用

3.8、for循环中的break 和continue

  • 和while循环中使用方法一致
    • break:打破循环,后续循环不再执行
    • continue: 结束本次循环,进入下一次循环,不会影响循环次数
# break 打破循环,后续循环不会执行
str1 = 'itheima'
for i in str1:if i == 'e':print('遇到e了,结束循环')breakprint(i)# continue 跳出本次循环,进入下一次循环,不会影响循环次数
str1 = 'itheima'
for i in str1:if i == 'e':print('遇到e了,进入下一次循环')continueprint(i)'''
案例:用for循环实现用户登录
① 输入用户名和密码
② 判断用户名和密码是否正确(username='admin',password='admin888') 
③ 登录仅有三次机会,超过3次会报错 
'''
# 循环三次
for i in range(3):# 获取用户名和密码username = input('请输入您的用户名:')password = input('请输入您的密码:')# 比对用户名和密码if username == 'admin' and password == 'admin888':print('登录成功')breakelse:print('用户名或密码错误')if i == 2:print('三次机会已经用完,账号被冻结')

3.9、for循环嵌套

# 打印一个直角三角形for i in range(1, 10):for j in range(1, i+1):print(f'{j} * {i} = {i * j}', end='\t')print()# 在for循环之外还可以调用i 或者j 么? 能# 在Python中for循环中创建的临时变量可以被外界调用,但是不要用
# print(i)
# print(j)
# 使用for循环临时变量可能会出现报错
# for i in range(1,1):
#     print(123)# 当for循环执行后,没有一次进入循环体内,也就是遍历的序列是一个空序列,那么临时变量将不会被定义,所以不要使用
# NameError: name 'i' is not defined
# print(i)

3.10、循环中的else

  • for…else…
  • while…esle…
  • 如果循环正常结束,则执行else中的代码,如果循环异常结束,不执行else中的代码
    • break 可以打破循环造成循环异常结束
    • continue不会造成循环异常结束
# 语法结构
'''
while 循环条件:条件满足,则循环执行此代码
else:循环条件不成立执行此代码,执行后循环结构终止
'''# 需求: 下载一个视频  从0% - 100%,下载完成后,显示下载完成 否则不显示
# 循环条件成立,则反复执行循环体中的代码,如果循环条件不成立,则执行else中的代码
# break打破了循环结构,循环异常终止,没有执行到循环条件不成立的那一刻,所以else不会被执行
# continue没有打破循环结构,循环正常进入循环条件不成立的状态后才会终止,此时执行else中的命令i = 0
while i <= 100:if i == 60:print('下载非法文件,已经将你举报,下载终止')# break  # 会造成循环异常终止,不会执行else中的代码i += 1continue  # 不会造成循环异常终止,会执行else中的代码print(f'下载进度:{i}%')i += 1
else:print('下载完成')
# 语法结构
'''
for 临时变量  in 数据序列(容器):循环执行的代码
else:所有元素遍历完成后执行的代码
'''# 需求: 下载一个视频  从0% - 100%,下载完成后,显示下载完成 否则不显示
for i in range(0, 101):if i == 60:# print('别下了,网费用光了')# break  # 打破循环,造成循环异常结束,不会执行else 中的命令print('丢包,这里没有下载好继续下载别的吧')continue # 结束本次循环,进入下一次循环,不会造成循环异常结束,会执行else中的命令print(f'下载进度:{i}%')
else:print('下载完成')

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

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

相关文章

Python----进程执行带有参数的任务

1. 进程执行带有参数的任务的介绍 前面我们使用进程执行的任务是没有参数的&#xff0c;假如我们使用进程执行的任务带有参数&#xff0c;如何给函数传参呢? Process类执行任务并给任务传参数有两种方式: args 表示以元组的方式给执行任务传参kwargs 表示以字典方式给执行任…

使用java获取nvidia显卡信息

前言 AI开发通常使用到GPU&#xff0c;但通常使用的是python、c等语言&#xff0c;java用的则非常少。这也导致了java在gpu相关的库比较少。现在的需求是要获取nvidia显卡的使用情况&#xff0c;如剩余显存。这里给出两种较简单的解决方案。 基于nivdia-smi工具 显卡是硬件&a…

算法(1)——双指针

双指针 我们常见的双指针的形式有两种&#xff0c;一种是对撞指针&#xff0c;一种是快慢指针&#xff01; 对撞指针&#xff1a;一般用于顺序结构中&#xff0c;也称左右指针。 1、对撞指针从两端向中间移动。一个指针从最左端开始&#xff0c;另一个从最右端开始&#xff0c…

2024年【起重机司机(限门式起重机)】考试题库及起重机司机(限门式起重机)模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机司机(限门式起重机)考试题库考前必练&#xff01;安全生产模拟考试一点通每个月更新起重机司机(限门式起重机)模拟考试题题目及答案&#xff01;多做几遍&#xff0c;其实通过起重机司机(限门式起重机)复审模拟…

21 3GPP中 5G NR高速列车通信标准化

文章目录 信道模型实验——物理层设计相关元素μ(与子载波间隔有关)设计参考信号(DMRS) 本文提出初始接入、移动性管理、线性小区设计等高层技术。描述3GPP采用HST场景的评估参数&#xff0c;阐释了HST应用的物理层技术&#xff0c;包括数字通信和参考信号设计&#xff0c;链路…

互联网中的商品超卖问题及其解决方案:Java中Redis结合UUID的应用

前言 在设计商品下单和库存扣减&#xff0c;你一定遇到过这样的问题&#xff0c;库存扣减为0了&#xff0c;可是消费者还能下单&#xff0c;并将订单信息保存到了数据库里&#xff0c;针对商品超卖问题&#xff0c;作此篇以解决。 随着互联网商业的飞速发展&#xff0c;商品超…

移动云捐赠三款开源项目,加速新一代基础软件生态繁荣

随着云计算、大数据、人工智能等新领域新信息技术的发展&#xff0c;我国基础软件的自主可控极大程度地影响着产业链上下游的多样性和技术创新的发展空间。移动云作为中国移动涉云业务的主入口&#xff0c;一直坚持共享开源价值&#xff0c;积极推动中国开源软件生态的繁荣发展…

SpringData JPA 整合Springboot

1.导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0…

7-1 单身狗(PTA - 数据结构)

由于这道题在留的作业中&#xff0c;排序和查找都有&#xff0c;所以我先写这道题&#xff08;图的先放放&#xff09; “单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人&#xff0c;以便给予特殊关爱。 输入格式&#xff1a; 输入第一行…

域架构下的功能安全思考

来源&#xff1a;联合电子 随着整车电子电气架构的发展&#xff0c;功能域控架构向整车集中式区域控制演进。新的区域控制架构下&#xff0c;车身控制模块(BCM)&#xff0c;整车控制单元&#xff08;VCU&#xff09;&#xff0c;热管理系统&#xff08;TMS&#xff09;和动力底…

PySide6 Tutorials (三)鼠标移动控件及其位置更新

问题描述 在graphicview中拖拽控件从A位置到B位置&#xff0c;但是从B位置再次拖拽控件的时候&#xff0c;控件依旧从A位置出发&#xff0c;与鼠标不处于同一位置。 解决方案 网上搜了一圈都是收费文章&#xff0c;什么时候开源精神都已经被xxxx用来中间商赚差价了嘛&#x…

python实现贪吃蛇游戏

文章目录 1、项目说明2、项目预览3、开发必备4、贪吃蛇代码实现4.1、窗口和基本参数实现4.2、绘制背景4.3、绘制墙壁4.4、绘制贪吃蛇4.5、绘制食物4.6、实现长度信息显示4.7、定义游戏暂停界面4.8、定义贪吃蛇死亡界面4.9、实现贪吃蛇碰撞效果4.10、实现添加食物功能4.11、实现…

String详解

String str new String&#xff08;“123”&#xff09;&#xff0c;和 String str “123” 区别 String str new String&#xff08;"123"&#xff09;;String str "123" ; new是创建对象&#xff0c;在堆中存储&#xff0c;非new 是在栈用的常量池中…

vuex--未完

一、 简介 vue3.0以上&#xff0c;本文是3.0 vue2.0 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库&#xff08;全局管理&#xff0c;相当于一个全局变量&#xff0c;所有页面共享&#xff09;。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则…

elementui中的el-table,当使用fixed属性时,table主体会遮挡住滚动条的大半部分,导致很难选中。

情况&#xff1a; 解决&#xff1a; el-table加个类&#xff0c;这里取为class"table" 然后是样式部分&#xff1a; <style scoped lang"scss"> ::v-deep.table {// 滚动条高度调整::-webkit-scrollbar {height: 15px;}// pointer-events 的基本信…

处理HTTP响应状态码和错误处理

在Web开发的世界里&#xff0c;HTTP响应状态码和错误处理是不可或缺的一部分。它们就像是道路上的交通信号灯&#xff0c;指导着我们前进的方向&#xff0c;确保我们的应用程序能够正常运行。 HTTP响应状态码是Web服务器返回给客户端的数字代码&#xff0c;用于表示请求的处理…

以编程方式向 App 设计工具添加 UI 组件

App 设计工具组件库中提供了大多数 UI 组件&#xff0c;可以将它们拖放到画布上。有时&#xff0c;可能需要在代码视图中以编程方式添加组件。以下是一些常见情况&#xff1a; 创建在组件库中未提供的组件。例如&#xff0c;用于显示某对话框的 App 必须调用适当的函数来显示该…

Volta简单介绍

Volta是一款强大的JavaScript工具管理器&#xff0c;它简化了命令行工具的安装和管理。通过Volta&#xff0c;开发者可以轻松地在多个项目中切换和配置Node.js、npm以及其它JavaScript工具版本&#xff0c;提高开发效率和环境一致性。 什么是 Volta Volta 是一种管理 JavaScri…

数据之门:使用IPIDEA开启网络自由之旅~

本文目录 前言一、网络代理IP简介二、IPIDEA 优势2.1 多种类型IP代理2.2 海量纯净代理池2.3 稳定高效数据收集架构2.4 个人IP管理中心 三、IP代理实操小Tips3.1 查看本地网络IP3.2 使用浏览器IP代理3.3 使用IPIDEA进行爬虫实操 四、总结 前言 各位友友&#xff0c;大家好&…

ASP.NET MVC+EntityFramework图片头像上传

1&#xff0c;先展示一下整体的效果 2&#xff0c;接下来展示用户添加以及上传头像代码、添加用户界面 前端代码如下&#xff1a; <div class"form-group">Html.LabelFor(model > model.img, "头像&#xff1a;", htmlAttributes: new { class &…