当前位置: 首页 > news >正文

Python 程序设计讲义(24):循环结构——循环后处理 while ... as 与 for...as

Python 程序设计讲义(24):循环结构——循环后处理 while … as 与 for…as

目录

  • Python 程序设计讲义(24):循环结构——循环后处理 while ... as 与 for...as
    • 一、while 循环的循环后处理:while...as
    • 二、for 循环的循环后处理:for...as
    • 三、循环控制语句 break 与 continue 对循环后处理的影响
        • 1、循环中有 break 的例子
        • 2、循环中有 continue 的例子

所有的循环都是在循环结束之后,执行循环之外的其他语句。但有时需要在循环结束后,执行一些具有特定意义的语句,Python 为 while 循环和 for 循环提供了 else 语句,用于循环后的处理。

一、while 循环的循环后处理:while…as

在 while 循环后使用 else 来执行特定的语句。

语法格式如下:

while 条件:循环体
else:语句块

说明:当循环正常结束后,将执行 esle 对应的语句块。

例如:输入成绩,如果成绩在60分及以上,显示通过,否则显示不通过。循环结束后显示循环已结束。

程序如下:

score=eval(input("请输入你的成绩(输入负值结束循环): "))
while score>0:if score>=60:print("通过")else:print("不通过")score=eval(input("请输入你的成绩(输入负值结束循环): "))
else:print("循环已结束")程序的运行结果为:
请输入你的成绩(输入负值结束循环): 50
不通过
请输入你的成绩(输入负值结束循环): 85
通过
请输入你的成绩(输入负值结束循环): 55
不通过
请输入你的成绩(输入负值结束循环): -2
循环已结束

二、for 循环的循环后处理:for…as

在 for 循环后使用 else 来执行特定的语句。

语法格式如下:

for 循环变量 in 遍历结构:循环体
else:语句块

例如:计算1~100之间所有整数的和,循环结束后显示循环已结束。

程序如下:

sum=0
for i in range(1,101):sum=sum+i
else:print("循环已结束")
print("sum=",sum)程序的运行结果为:
循环已结束
sum= 5050

三、循环控制语句 break 与 continue 对循环后处理的影响

如果在包含 break 与 continue 的循环中使用了 else,那么 else 后面的语句会收到 break 的影响,但不会受到 continue 的影响。

在 while 循环中,只有当循环条件为假(False)时才属于正常的循环结束。在 for 循环中,只有正常提取过遍历结构中的所有元素后而结束的循环才属于正常的循环结束。只有正常结束的循环才会执行 else 后面的语句。

如果在循环结构中使用了 break,则循环属于非常结束,则不会执行 else 所指定的语句。

如果在循环结构中使用了 continue,则循环仍然会正常结束,因此会执行 else 所指定的语句。

1、循环中有 break 的例子

(1)while 循环举例

sum,i=0,1
while i<10:sum+=ii+=1if i==3:break
else:print("循环结束")  #此行代码不会被还行
print(sum)程序的运行结果为:
3

(2)for 循环举例

sum=0
for i in range(1,11):sum+=iif i==3:break
else:print("循环结束")  #此行代码不会被执行
print(sum)程序的运行结果为:
6
2、循环中有 continue 的例子

(1)while 循环举例

i=0
while i<10:i+=1if i%3==0:continueprint(i)
else:print("循环结束")  #此行代码会被执行程序的运行结果为:
1
2
4
5
7
8
10
循环结束

(2)for 循环举例

for i in range(1,11):if i%3==0:continueprint(i)
else:print("循环结束")  #此行代码会被执行程序的运行结果为:
1
2
4
5
7
8
10
循环结束
http://www.dtcms.com/a/300493.html

相关文章:

  • 大模型算法面试笔记——常用优化器SGD,Momentum,Adagrad,RMSProp,Adam
  • 算法思维进阶 力扣 300.最长递增子序列 暴力搜索 记忆化搜索 DFS 动态规划 C++详细算法解析 每日一题
  • 用KNN实现手写数字识别:基于 OpenCV 和 scikit-learn 的实战教学 (超级超级超级简单)
  • Torchv Unstrustured 文档解析库
  • Mac配置本地邮件
  • 【Qt开发】信号与槽(二)-> 信号和槽的使用
  • Web Worker:解锁浏览器多线程,提升前端性能与体验
  • 29.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户配置服务
  • 七、搭建springCloudAlibaba2021.1版本分布式微服务-skywalking9.0链路追踪
  • 重生之我在暑假学习微服务第二天《MybatisPlus-下篇》
  • MCP + LLM + Agent 8大架构:Agent能力、系统架构及技术实践
  • 2.苹果ios逆向-Windows电脑端环境搭建-Conda安装和使用(使用Conda来管理多个Python环境)
  • Canvas实现微信小程序图片裁剪组件全攻略
  • 设计模式(七)结构型:适配器模式详解
  • 可控、安全、可集成:安防RTSP|RTMP视频播放模块工程实践参考
  • 医疗AI语义潜空间分析研究:进展与应用
  • 【机器学习深度学习】LLaMAFactory评估数据与评估参数解析
  • J3160迷你小主机 性能测试 对比i3-4170 以及服务器
  • C++ 多线程 std::thread::join
  • Window 部署 coze-stdio(coze 开发平台)
  • GAN/cGAN中到底要不要注入噪声
  • InfluxDB 与 MQTT 协议集成实践(二)
  • Element表格单元格类名动态设置
  • Linux网络
  • libomxil-bellagio移植到OpenHarmony
  • Ubuntu简述及部署系统
  • MybatisPlus-19.插件功能-通用分页实体
  • JDK 11.0.16.1 Windows 安装教程 - 详细步骤+环境变量配置
  • Day44 Java数组08 冒泡排序
  • AI与区块链Web3技术融合:重塑数字经济的未来格局