python基础3——流程控制
文章目录
- 一、操作符
- 1.1 比较操作符
- 1.2 逻辑操作符
- 1.3 成员操作符
- 1.4 身份操作符
- 二、流程控制
- 2.1 条件判断
- 2.2 循环语句
- 2.2.1 for循环
- 2.2.2 while循环
- 2.3 continue与break语句
- 2.4 文件操作函数
- 三、函数
- 3.1 定义函数
- 3.2 作用域
- 3.3 闭包
- 3.4 函数装饰器
- 3.5 内建函数
一、操作符
- 操作符:一个特定的符号,用它与其他数据类型连接起来组成一个表达式。常用于条件判断,根据表达式返回True/False采取动作。
1.1 比较操作符
- 比较操作符:比较两边值。
操作符 | 描述 | 示例 |
---|---|---|
== | 相等,两边值是否相等 | (6 == 6) 结果 True |
!= | 不相等,两边值是否不相等 | (6 != 6) 结果False |
> | 大于,左边值是否大于右边值 | (8 > 6) 结果True |
< | 小于,左边值是否小于右边值 | (8 < 6) 结果False |
>= | 大于等于,左边值是否大于等于右边值 | (6 >= 6) 结果True |
<= | 小于等于,左边值是否小于等于右边值 | (6 <= 6) 结果True |
1.测试“==”。
2.测试“!=”。
3.测试“>、<”。
4.测试“>= 、<=”。
1.2 逻辑操作符
- 判断条件逻辑。
操作符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 与,所有的条件都 True结果才为True;只要有一个为False,结果就为False |
or | x or y | 或,所有的条件只要有一个是True结果就为True |
not | not x | 非,结果取反 |
1.测试“and、or”。
2.测试“not”。
1.3 成员操作符
- 判断某个元素是否在数据类型里。
操作符 | 描述 | 示例 |
---|---|---|
in | 如果在指定的序列中找到值返回True,否则返回False | computer = [“主机”,“显示器”,“鼠标”,“键盘”] print(“主机” in computer) 结果True print(“音响” in computer) 结果False |
not in | 如果在指定的序列中没有找到值返回True,否则返回False | print(“主机” not in computer) 结果False print(“音响” not in computer) 结果True |
1.测试“in”。
2.测试“not in”。
1.4 身份操作符
- 判断两个对象的内存地址标识符id是否相等。
操作符 | 描述 |
---|---|
is | 判断两个标识符是否引用一个对象 |
is not | 判断两个标识符是否引用不同对象 |
1.测试“is”。
2.测试“not is”。
二、流程控制
2.1 条件判断
//语法。if <表达式>:<代码块>
elif <表达式>:<代码块>
else:<代码块>
1.单分支,判断是否成年。
age = int(input("请输入你的年龄: "))if age > 18:print("恭喜,你已经成年!")
else:print("抱歉,你还未成年!")
2.三目表达式写法。
age = int(input("请输入你的年龄: "))print("恭喜,你已经成年!" if age > 18 else "抱歉,你还未成年!")
3.多分支,根据人的年龄段划分。
age = int(input("请输入你的年龄: "))if age < 7 :print("儿童")
elif age >= 7 and age < 17:print("少年")
elif age >= 18 and age < 40:print("青年")
elif age >= 41 and age < 48:print("壮年")
else:print("老年")
2.2 循环语句
- 循环的作用在于将一段代码重复执行多次。
- Python中实现循环常用有两个语句:for、while
2.2.1 for循环
- 一般用于遍历数据类型的元素进行处理,例如字符串、列表。
//语法.for <变量> in <序列>:<代码块>
1.例一,遍历字符串。
s = "123456"
for i in s:print(i)
2.例二,遍历列表。
computer = ["主机","显示器","鼠标","键盘"]
for i in computer:print(i,len(i))
3.例三,遍历字典。
computer = {"主机":5000,"显示器":1000,"鼠标":60,"键盘":150}
for i in computer.items():print(i) print("名称: %s\t价格: %s" % (i[0],i[1]))
4.例四,嵌套循环。
s1 = "123456"
s2 = "456789"
for i in s1:for x in s2:if i == x:print(i)
2.2.2 while循环
- 在某条件下循环执行一段代码,即重复相同的任务。
//语法。
while <表达式>:<代码块>
1.示例1,当条件满足时停止循环。
count = 0
while count < 5:print(count)count += 1
2.例二,死循环。
count = 0
while True:print(count)count += 1
2.3 continue与break语句
- continue 当满足条件时,跳出本次循环。
- break 当满足条件时,跳出所有循环。
- 注意事项:只有在for、while循环语句中才有效。
1.例一,continue语句。
for n in range(8):if n == 3:continueelse:print(n)
2.例二,break。
for n in range(8):if n == 3:breakelse:print(n)
3.案例:用户登录,三次错误机会
count = 0
while True:if count < 3:name = input("请输入你的用户名: ").strip() # .strip()去除首尾空格if len(name) == 0:print("输入不能为空!")continueelif name == "qingjun":print("登录成功.")breakelse:print("用户名错误,请重新输入!")count += 1else:print("超出错误次数, 退出!")break
2.4 文件操作函数
- 要想读取文件(如txt、csv等),第一步要用open()内建函数打开文件,它会返回一个文件对象,这个对象拥有read()、write()、close()等方法。
语法:open(file,mode=‘r’,encoding=None)
- file:打开的文件路径,可以是绝对路径,也可以是相对路径。
- mode(可选):打开文件的模式,如只读、追加、写入等。
- r:只读。
- w:只写。
- a:在原有内容的基础上追加内容(末尾)。
- w+:读写。
- 如果需要以字节(二进制)形式读取文件,只需要在mode值追加‘b’即可,例如wb
- 文件对象操作,f = open(‘test.txt’)
方法 | 描述 |
---|---|
f.read([size]) | 读取size字节,当未指定或给负值时,读取剩余所有的字节,作为字符串返回 |
f.readline([size]) | 从文件中读取下一行,作为字符串返回,如果指定size则返回size字节。 |
f.readlines([size]) | 读取size字节,当未指定或给负值时,读取剩余所有的字节,作为列表返回。 |
f.write(str) f.flush | 写字符串到文件。 刷新缓冲区到磁盘。 |
f.seek(offset[,whence=0]) | 在文件中移动指针,从whence 偏移offset个字节。 (0代表文件起始位置,默认。1代表当前位置2代表文件末尾) |
f.tel() | 当前文件中的位置 (指针) |
f.close() | 关闭文件 |
1.例一,读取文件内容。
qingjun = open('qingjun.txt',mode='r',encoding=None)
print(qingjun.read())
qingjun.flush()
qingjun.close()
2.例二,遍历打印每一行。
qingjun = open('qingjun.txt',mode='r',encoding=None)
for line in qingjun:print(line.strip('\n')) # 去掉换行符qingjun.flush()
qingjun.close()
3.with语句:不管在处理文件过程中是否发生异常,都能保证with 语句执行完毕后已经关闭了打开的文件句柄。
with open("qingjun.txt",encoding="utf8") as f:data = f.read()print(data)
三、函数
函数概念:
- 指一段可以直接被另一段程序或代码引用的程序或代码。
- 在编写代码时,常将一些常用的功能模块编写成函数,放在函数库中供公共使用,可减少重复编写程序段和简化代码结构。
3.1 定义函数
语法:
def 函数名称(参数1,参数2,...):<代码块>return <表达式> //reurn是返回的状态值,表示代码执行结果。
1.定义普通函数。
def hello():print("Hello World!")
hello() # 调用函数
2.定义传参函数,传入固定参数。
##定义求和函数。
def f(a, b):return a + b
print(f(1,2))# 按参数位置赋值
print(f(b =2,a=1)) # 按对应关系赋值##生成序列列表。
def qingjun(n):result = []x=0while x < n:result.append(x)x +=1return result
print(qingjun(9))##参数默认值:预先给参数定义默认值,如果调用函数时没指定该值,则用默认值。
def f(a, b=2):return a + b
print(f(1))
print(f(1,3))
3.定义传参函数,传入多个未知参数。
- 当不知道有多少个参数时可以在参数前面加*与**,表示可接收任意多个参数。
- *name 接收任意多个参数,并放到一个元组中。
- **name 接收一个键值,并存储为字典。
//传入多个参数,计算总和。
def func(*seq):x=0for n in seq:x += nreturn xprint(func(1,2,3))//传入多个键值,进行处理。
def func(**computer):for k,v in computer.items():print("名称:%s\t价格:%s" %(k,v))func(主机=5000,显示器=1000,鼠标=60,键盘=150)
4.定义匿名函数。
- 匿名函数:没有名字的函数,使用lambda关键字定义,一般仅用于单个表达式。
//定义求和函数。
s = lambda a, b: a+b
print(s(1,2))//等价于
def func(a,b):return a+b
print(func(1,2))
3.2 作用域
含义:
- 限制一个变量或一段代码可用范围。好处是提高程序逻辑的局部性,减少名字冲突。
作用域范围:
- Local (局部作用域):在函数中定义的变量。de关键字定义的语句块中,即函数中定义的变量。
- Enclosed (嵌套作用域):一般出现在函数中嵌套一个函数时,在外部函数中的作用域称为嵌套作用域 (闭包常见)。
- Global (全局作用域):文件顶层定义的变量。
- Built-in (内置作用域):系统内解释器定义的变量,例如关键字。
1.示例。
qingjun1 = 2 ##全局变量。
def baimu(): ##定义函数global qingjun2 ##将局部变量变成全局变量。qingjun2 =3 #局部变量。baimu() ##引用函数。
print(qingjun1) ##打印全局变量。
print(qingjun2) ##打印局部变量。
3.3 闭包
含义:
- 闭包是一个定义在函数内部的函数,闭包使得变量即使脱离了该函数的作用域范围也依然能被访问到。
- 嵌套函数也是闭包的一种形式,将内部嵌套定义的函数作为返回值。
构成闭包的三个条件:
- 两层以上嵌套关系
- 内部函数调用外部函数定义的变量
- 外部函数返回内部函数体对象,而不是函数体结果(加括号)
1.示例。
def qingjun():x = 1def baimu():print(x)return baimu #不加括号表示返回函数体不执行函数,外部调用时才会执行;加括号代表直接调用执行函数。qingjun() #调用外部函数。
qingjun()() #调用内部函数。
3.4 函数装饰器
含义:
- 装饰器本质上是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。
应用场景:
- 记录日志、性能测试、权限效验等。
1.例一,原函数无传入参数。
######################################
#定义原函数。
def hello():print("原函数功能")
hello() #调用原函数。
######################################
#定义装饰器。
def qingjun(mq): #新增函数调用器,传入参数mq,mq也可以是函数。def baimu():print("原函数准备执行了!") ##新增功能。mq() #原函数放在内部函数的执行逻辑里。print("原函数执行完毕!") ##新增功能。return baimu #打印内部函数体,外部调用时才执行该函数。
qingjun(hello)() #调用内部函数,同时给外部函数传入函数hello,hello为原函数。
2.例二,语法糖@用法。
######################################
#定义装饰器。
def qingjun(mq):def baimu():print("原函数准备执行了!")mq()print("原函数执行完毕!")return baimu
######################################
#定义原函数时,直接@装饰器调用。
@qingjun
def hello():print("原函数功能")
hello()
3.例三,原函数传入参数。
######################################
#定义装饰器。
def qingjun(mq):def baimu(u):print("原函数准备执行了!")mq(u)print("原函数执行完毕!")return baimu
######################################
#定义原函数时,直接@装饰器调用,并传入参数u。
@qingjun
def hello(u):print(u)
hello("已传入参数")
3.5 内建函数
函数 | 作用 | 语法 |
---|---|---|
range() | 动态生成数字序列。 | range(1,6)、range(10) |
open() | 打开、并操作文件。 | open(file,mode=‘r’,encoding=None) |
map() | 根据提供的函数处理序列中的元素,处理完后返回一个迭代器对象。 | map(function, iterable, …) |
filter() | 用于过滤序列,过滤掉不符合条件的元素,处理完后返回一个迭代器对象。 | filter(function, iterable) |
sorted() | 对所有可迭代的对象进行排序操作。 | sorted(iterable, *, key=None, reverse=False) key:指定带有单个参数的函数,用于从interable的每个元素取出比较的键,默认为None(直接比较元素)。 reverse 排序规则,True降序, False升序(默认) |
reversed() | 返回一个反转的迭代器。 | reversed(seq) |
join() | 将序列中的元素以指定的字符连接,生成一个新的字符串。 | ‘拼接符’.join(凭借对象) |
min() | 返回可迭代对象中最小的元素 | qingjun = [1,2,3,4,5,6,7] print(min(qingjun)) |
max() | 返回可迭代对象中最大的元素 | qingjun = [1,2,3,4,5,6,7] print(max(qingjun)) |
sum() | 对可迭代对象求和 | qingjun = [1,2,3,4,5,6,7] print(sum(qingjun)) |
zip() | 对多个可迭代对象创建一个聚合,返回一个元组的迭代器。 | x = [1, 2, 3],y = [4, 5, 6] qingjun = zip(x, y) print(list(qingjun)) |
globals() | 字典格式返回当前范围的全局变量 | \ |
locals() | 字典格式返回当前范围的局部变量 | \ |
相关文章:

python基础3——流程控制
文章目录 一、操作符1.1 比较操作符1.2 逻辑操作符1.3 成员操作符1.4 身份操作符 二、流程控制2.1 条件判断2.2 循环语句2.2.1 for循环2.2.2 while循环 2.3 continue与break语句2.4 文件操作函数 三、函数3.1 定义函数3.2 作用域3.3 闭包3.4 函数装饰器3.5 内建函数 一、操作符…...

kubernetes中最小组件——Pod
目录 一、Pod简介 二、Pod的使用方式 三、Pause——Pod中底层基础容器 四、为什么kubernetes这样设计Pod 五、Pod的分类 1.自主式Pod 2.控制器管理的Pod 3.静态Pod 六、Pod容器的分类 1. 基础容器(infrastructure container) 2. 初始化容器&am…...

C++ 友元
文章目录 前言一、什么是友元二、友元的特性三、示例代码总结 前言 在C编程中,友元(friend)是一种特殊的关系,允许一个类或函数访问另一个类中的私有成员。 一、什么是友元 1.友元 的定义: 友元在C中可以被用于类和…...

Vulkan 绘制显示设计
背景 众所周知,Vulkan是个跨平台的图形渲染API,为了友好地支持跨平台,Vulkan自然也抽象出了很多接口层去对接各个操作系统,抹平系统间的差异,Swap Chains即为WSI。 其本质上是一种图像队列,此队列会按顺序…...
Linux性能分析工具介绍(一)--cpu及功耗相关工具介绍
目录 一、引言 二、CPU及功耗分析工具介绍 ------>2.1、cpuinfo ------------>2.1.1、cpuid指令 ------>2.2、lscpu ------>2.3、turbostat ------>2.4、rdmsr ------>2.5、mpstat ------>2.6、/proc/stat ------>2.7、powertop ----------…...

智能财务分析的无冕之王-奥威BI数据可视化工具
利用智能数据可视化分析工具,可极大提升财务分析效率和报表可读性,缩短从分析到决策的耗时。但财务分析的难度往往比其他分析更高,因为它的分析指标计算组合变化太多也太快。哪些数据可视化工具能胜任智能财务数据分析? 奥威BI数…...

.NET 应用程序 部署
**硬件支持型号 点击 查看 硬件支持 详情** DTU701 产品详情 DTU702 产品详情 DTU801 产品详情 DTU802 产品详情 DTU902 产品详情 G5501 产品详情 本文内容 在设备上部署 dotnet应用,与任何其他平台的部署相同,可以2种方式: 依赖于框…...

Linux CentOS安装NVIDIA GPU驱动程序和NVIDIA CUDA工具包
要在CentOS上安装NVIDIA驱动程序和NVIDIA CUDA工具包,您可以按照以下步骤进行操作: 1. 准备工作: 确保您的系统具有兼容的NVIDIA GPU。您可以在NVIDIA官方网站上查找支持CUDA的GPU型号列表。如果您之前已经安装了Nouveau驱动程序并禁用了它…...
剑指Offer13.机器人的运动范围 C++
1、题目描述 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的…...
List、Map、Set打印
List List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。 普通[1,2] 1.循环 2.System.out.println(list); int数组[1,2,3,4,5,6,1,2,3] 1.for (int[] array : list)…...
软件机器人在渔业船员证书核发中自动化二次审批制证,提高效率和准确性
近年来,随着科技的不断进步,自动化软件机器人在各个领域得到了广泛应用。在渔业船员证书核发事项中,传统的审批和制证流程相对繁琐。博为小帮软件机器人可以让这一流程变得更加高效和准确。 在过去,渔业船员证书核发事项需要在省级…...

Godot4 C# vscode开发环境搭建
用vscode搭建Godot4 C# 开发环境搭建 软件Godot配置vscode配置结果参考 软件 Godot .Net版本: 下载链接vscode :自行下载.netcore7:.netcore6可能也行vscode插件: Godot配置 1.配置文件用VSCode打开 2.生成C#项目 项目–>工具–>C#->Creat…...

nginx简介与安装配置,目录结构和配置文件介绍
一.nginx简介 1.简介 2.特性 二.nginx安装 1.rpm包方式 (1)下载扩展源 (2)安装扩展rpm包,nginx -V查看配置参数,后面源码安装时要用到 2.源码方式 (1)建议提前下好所需要的部…...

CTF流量题解http4.pcapng
流量分析 导出http 打开报错 验证文件头,发现是zip。 图常片见里文可件能的包16含进:压制缩头包部,word,pdf JPG FF D8 FF E0/FF D8 FF E1 PNG 89 50 4E 47 GIF 47 49 46 38 ZIP 50 4B 03 04 RAR 52 61 72 21 MP3 49 44 33 0 改后缀 使用工具爆破。 git clone git…...

旷视科技AIoT软硬一体化走向深处,生态和大模型成为“两翼”?
齐奏AI交响曲的当下,赛道玩家各自精彩。其中,被称作AI四小龙的商汤科技、云从科技、依图科技、旷视科技已成长为业内标杆,并积极追赶新浪潮。无论是涌向二级市场还是布局最新风口大模型,AI四小龙谁都不甘其后。 以深耕AIoT软硬一…...

STM32 F103C8T6学习笔记2:GPIO的认识—GPIO的基本输入输出—点亮一个LED
今日继续学习使用 STM32 F103C8T6开发板 点亮一个LED灯,文章提供源码,测试工程,实验效果图,希望我的归纳总结会对大家有帮助~ 目录 GPIO的认识与分类 : 引脚安排整理: 定时器的引脚例举: …...

数组相关练习
数组练习 将数组转化成字符串数组拷贝求数组元素的平均值查找数组中指定元素(顺序查找)二分查找冒泡排序数组逆序 将数组转化成字符串 import java.util.Arrays;public class Text1 {public static void main(String[] args) {int[] arr {5, 6, 4, 2};System.out.println(Arr…...

Leetcode-每日一题【剑指 Offer 11. 旋转数组的最小数字】
题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4…...

git教程(第一次使用)
一、gitee和github区别 二、git使用 下载地址 windows:https://gitforwindows.org/ mac:http://sourceforge.net/projects/git-osx-installer/ 1.git初次运行前的配置 (1)配置用户信息 git config --global user.name "…...

Autoware.ai1.14.0自动驾驶-Demo运行
Autoware.ai1.14.0自动驾驶-Demo运行 数据准备 下载数据: wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz一定要注意解压文件是在.auto…...
【RAG召回】bge实现向量相似度索引
sentence-transformers 是一个非常强大的 Python 框架,它可以将句子或段落转换成高质量、高信息密度的数字向量(称为“嵌入”或 Embeddings)。它厉害的地方在于,语义上相似的句子,其向量在空间中的距离也更近。 这使得…...

用电脑通过USB总线连接控制keysight示波器
通过USB总线控制示波器的优势 在上篇文章我介绍了如何通过网线远程连接keysight示波器,如果连接的距离不是很远,也可以通过USB线将示波器与电脑连接起来,实现对示波器的控制和截图。 在KEYSIGHT示波器DSOX1204A的后端,除了有网口…...

STM32H562----------串口通信(UART)
1、串口介绍 1.1、 数据通信概念 在单片机中我们常用的通信方式有 USART、IIC、SPI、CAN、USB 等; 1、数据通信方式 根据数据通信方式可分为串行通信和并行通信两种,如下图: 串行通信基本特征是数据逐位顺序依次传输,优点:传输线少成本低,抗干扰能力强可用于远距离传…...
矩阵详解:从基础概念到实际应用
矩阵详解:从基础概念到实际应用 目录 矩阵的基本概念矩阵的类型矩阵运算特殊矩阵矩阵的逆与伴随矩阵的秩与等价分块矩阵矩阵的应用 矩阵知识体系思维导图 mindmaproot((矩阵))基本概念定义mn数表元素aij矩阵记号基本术语行数和列数方阵与非方阵矩阵相等矩阵类型…...

网络编程(计算机网络基础)
思维导图 认识网络 1.网络发展史 ARPnetA(阿帕网)->internet(因特网)->移动互联网->物联网 2.局域网与广域网 局域网 概念:的缩写是LAN(local area network),顾名思义,是个本地的网络,只能实现…...

免费批量PDF转Word工具
免费批量PDF转Word工具 工具简介 这是一款简单易用的批量PDF转Word工具,支持: 批量转换多个PDF文件保留原始格式和布局快速高效的转换速度完全免费使用 工具地址 下载链接 网盘下载地址:点击下载 提取码:8888 功能特点 ✅…...

【大模型】【推荐系统】LLM在推荐系统中的应用价值
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点B.4 两大推荐方法 C 模型结构C.1 知识蒸馏(训练过程)C.2 轻量推理(部署过程) D 实验设计E 个人总结 A 论文出处 论文题目:SLMRec:Distilling…...

前端文件下载常用方式详解
在前端开发中,实现文件下载是常见的需求。根据不同的场景,我们可以选择不同的方法来实现文件流的下载。本文介绍三种常用的文件下载方式: 使用 axios 发送 JSON 请求下载文件流使用 axios 发送 FormData 请求下载文件流使用原生 form 表单提…...

Docke启动Ktransformers部署Qwen3MOE模型实战与性能测试
docker运行Ktransformers部署Qwen3MOE模型实战及 性能测试 最开始拉取ktransformers:v0.3.1-AVX512版本,发现无论如何都启动不了大模型,后来发现是cpu不支持avx512指令集。 由于本地cpu不支持amx指令集,因此下载avx2版本镜像: …...

NLP学习路线图(二十):FastText
在自然语言处理(NLP)领域,词向量(Word Embedding)是基石般的存在。它将离散的符号——词语——转化为连续的、富含语义信息的向量表示,使得计算机能够“理解”语言。而在众多词向量模型中,FastText 凭借其独特的设计理念和卓越性能,尤其是在处理形态丰富的语言和罕见词…...