更多控制流工具

news/2025/2/28 2:01:56/文章来源:https://www.cnblogs.com/zhaozhijiong/p/18742449

控制语句

if & elif & else 语句

x = int(input("请输入一个整数:"))
if x > 0:print('x > 0')
elif x == 0:print('Single')
elif x < 0:print('x < 0')更多

在python中 elif是else if 的缩写

for 语句

语法: for [name] in [list_name]

word = ['dog', 'cat', 'pig']
for i in word:print(i, len(i))02_for语句.py
dog 3
cat 3
pig 3

​ i为列表的元素,每输出一次,自身+1,不需要像Java手动for(int i = 0; [条件]; i++), 不能像Java,能够自定义循环区间,循环一次直接遍历整个列表

# 创建示例多项集
users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}# 策略:迭代一个副本
for user, status in users.copy().items():if status == 'inactive':del users[user]# 策略:创建一个新多项集
active_users = {}
for user, status in users.items():if status == 'active':active_users[user] = status

​ 迭代:

​ users.copy().items()

range()函数

range([a], b, [c]): 用于生成等差数列,公差为c。 生成列表的范围:a到b-1,a可选填(默认为0)c可选填(默认为1)

for i in range(0, 5):print(i)py/03_range()函数.py"
0
1
2
3
4

range()只有在被迭代的时候才会生成所期望的值,它本身并不返回一个实际的列表

>>> range(5)
range(0, 5)		#直接打印range()并不会返回一个实际的列表>>> for i in range(5):
...     print(i)
...
0
1
2
3
4

break & continue

break:跳出最近一层的for 或者 while循环

continue:继续执行下一次迭代

continue

for i in range(5):if i % 2 == 0:    #当i为偶数时输出print(f"found a even num {i}")continue  #输出完成后,直接执行下一此迭代 不再执行下方的代码print(f'found a odd num {i}')

break

for i in range(5):for j in range(5):if i == j:print(j)break
0
1
2
3
4

循环的else语句

​ 循环的else语句与break同时出现当一次循环的进行完成之后,还没有满足执行break的数据时,执行else中的逻辑

for i in range(5): if i == 5:print('found 5')break
else:		#else属于for循环而不是属于ifprint('not found 5')/04_break&continue.py"not found 5

​ 当循环被break跳出后,将不会在执行else中的逻辑语句

for i in range(5): if i == 4:print('found 4')break
else:print('not found 4')04_break&continue.py"found 4

match_case语句

match_case和Java的switch比较相似

def http_status(status):match status:case 400:print('Bad Request')case 404:print('Not Found')case _:print('REEOR')
status = 400
http_status(status)
status = 404
http_status(status)
status = 444	#当status = 444 时 case中没有匹配的case语句,所以默认执行case _:
http_status(status)05_match_case语句.py
Bad Request
Not Found
REEOR

特别注意: case _: 相当匹配未成功时默认执行, 在case条件中没有匹配的条件时,默认执行case _: 中的逻辑

匹配模式

class Point:def __init__(self, x, y):self.x = xself.y = ydef where_is(point):match point:case Point(x=0, y=0):print("Origin")case Point(x=0, y=y):print(f"Y={y}")case Point(x=x, y=0):print(f"X={x}")case Point():print("Somewhere else")case _:print("Not a point")# 创建一些Point实例
p1 = Point(0, 0)
p2 = Point(0, 5)
p3 = Point(3, 0)
p4 = Point(4, 6)
p5 = Point(1, 2)
p6 = "Not a point"# 使用where_is函数检查这些点的位置
where_is(p1)  # 输出: Origin
where_is(p2)  # 输出: Y=5
where_is(p3)  # 输出: X=3
where_is(p4)  # 输出: Somewhere else
where_is(p5)  # 输出: Somewhere else
where_is(p6)  # 输出: Not a point05_match_case语句.py
Origin
Y=5
X=3
Somewhere else
Somewhere else
Not a point
  1. 字面量模式:匹配特定的值。

    match value:case 42:print("The answer is 42")
    
  2. 变量模式:将匹配到的值赋给变量。

    match point:case Point(x=x, y=y):print(f"X={x}, Y={y}")
    
  3. 通配符模式:匹配任何值。

    match value:case _:print("Any value")
    

守卫字句

我们可以为模式添加 if 作为守卫子句。如果守卫子句的值为假,那么 match 会继续尝试匹配下一个 case 块。注意是先将值捕获,再对守卫子句求值

match point:case Point(x, y) if x == y:print(f"Y=X at {x}")case Point(x, y):print(f"Not on the diagonal")

简单理解: 在判断case匹配的条件时 要先经过if 如果if的返回值为真,才能继续匹配case中的条件

num = 4
match num:case 4 if False:		#if 为假所以直接跳过匹配 输出case _print('success')case _:print('not found')/05_match_case语句.py
not found
num = 4
match num:case 4 if False:		#if 为真 则继续匹配case = 4print('success')case _:print('not found')/05_match_case语句.py
success

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

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

相关文章

【phpstudy】phpstudy的MySQL服务启动不了?一启动就自动停止怎么办?

遇到一个问题,就是phpstudy的MySQL服务启动不了,一启动就自动停止。 很明显是端口被占用,还要删除本地的MySQL。 按照以下步骤皆可解决: 第一步:查询mysql服务、然后删除 sc query mysqlsc delete mysql第二步:查看端口情况 netstat -ano | findstr 3306查询为空即可。 如…

[Python] Jupyter NoteBook : 开源的交互式 Python Web 应用程序

概述:Jupyter Notebook 简介Jupyter Notebook是一个开源的Web应用程序,允许用户创建和共享包含实时代码、方程、可视化和解释性文本的文档。它最初由IPython团队开发,现在已经成为一个独立的项目,并广泛用于数据清理和转换、数值模拟、统计建模、数据可视化、机器学习等等。…

【SSH实战】巧用 SSH 打通外网限制

在工作中遇到此场景,如下两条网络限制下,总部如何访问分公司内部web服务器?dmz服务器可以访问总部外网服务器22端口,不可以访问web服务器; web服务器不可访问公网,但是到dmz网络无限制。初看需求,我们第一个想到的肯定是内网端口映射到公网,或者vpn,但是不修改网络策略…

Java Web - 项目

Java Web 项目中学到的相关知识: RESTful, Apifox, 三层架构, 日志技术, 数据库多表操作, 事务管理, 阿里云 OSS 文件上传, 全局异常处理, 登录认证 (JWT, 拦截器), AOP(实现日志管理)Java Web - 项目 准备工作 开发模式 当前主流开发模式: 前后端分离 前后端分离, 如何知道前后…

【Linux部署】Linux环境下Java项目Jar包的启动指令

在Java开发领域,我们经常需要将编译好的Java应用程序打包成Jar文件,以便于部署和运行。 特别是在Linux服务器上,管理多个Jar包的启动和停止是日常运维中的重要一环。 本文介绍如何在Linux环境下高效地启动和管理Jar包,同时提供简洁明了的代码示例,帮助大家更好地理解这一过…

手把手教你用 MicroPython 玩转幻尔串口舵机,代码+教程全公开

MicroPython串口舵机库,支持幻尔科技全系列舵机,支持mpremote工具一键导入,28条指令全测试。原文链接: FreakStudio的博客 摘要 MicroPython串口舵机库,支持幻尔科技全系列舵机,支持mpremote工具一键导入,28条指令全测试。 往期推荐: 学嵌入式的你,还不会面向对象??…

Plombery:将Python脚本的执行与Web界面的可视化监控完美结合的Python任务调度工具

还在为定时运行Python脚本而苦恼吗?还在为复杂的调度系统而头疼吗?今天,就让Plombery帮你解决这些问题!Plombery是一个简单易用的Python任务调度器,拥有友好的Web界面和REST API,让你轻松管理和监控你的Python脚本。告别复杂的配置和代码,Plombery将带你进入高效、便捷的…

AQS的acquire(int arg) 方法底层源码

一、定义 acquire(int arg) 是 AQS(AbstractQueuedSynchronizer)中的一个核心方法,用于在独占模式下获取同步状态。如果当前线程无法获取同步状态,则将其加入等待队列并阻塞,直到成功获取同步状态或被中断 1、acquire(int arg) 方法的作用功能:尝试获取同步状态(独占模式…

【钓鱼邮件】春节复工近期常见的钓鱼邮件

本期主要分享2025年2月常见的钓鱼邮件样本,特别提醒广大用户在春节复工高峰期加强安全防范。 补贴类钓鱼邮件 春节之后,五险一金补贴、年终奖补贴相关的钓鱼邮件依旧频发。钓鱼手法也有所提升,攻击者通常将通知内容放到附件中,并且对附件设置访问密码,试图绕过反垃圾系统检…

HTTP协议与RESTful API实战手册(终章):构建企业级API的九大秘籍

title: HTTP协议与RESTful API实战手册(终章):构建企业级API的九大秘籍 🔐 date: 2025/2/28 updated: 2025/2/28 author: cmdragon excerpt: 🏭 本文作为系列终章,通过物流管理系统的案例,揭秘API开发的完整流程。你将掌握: 深度解读28个HTTP协议进阶特性(ETag/CO…

第一周实验:二次开发

来源 来自大一舍友C++大作业。该项目模拟了一个图书管理系统,涉及到用户对于书籍的查看、借阅与归还,管理员对于书籍相关信息的增删改查。 运行环境+运行结果的截图 运行环境:Windows 11 + Visual Studio 2022main.cpp #include<Windows.h> #include "Account.h&…

学习笔记之day02 Linux-基础篇-系统安装

​1、操作系统简介操作系统:人与计算机硬件交互的中介Linux:内核+Shell +扩展软件Windows:内核+explorer.exe+软件类比法:计算机硬件 -- 内核 == 蛋黄 / Shell == 蛋清 / 外围应用程序 == 蛋壳常见的操作系统:Windows、Linux、DOS、UnixLinux操作系统开放源代码、可以自由…