【Python】基本语法
数据类型
通过 print(type(x)) 可以输出 x 的数据类型,type() 函数可以获取数据类型
整数
a = 10
print(type(a))
浮点数
a = 0.5
print(type(a))
字符串
a = 'hello'
print(type(a))
获取字符串长度
a = 'hello'
print(len(a))
字符串拼接
a = 'hello'
b = 'world'
print(a + b)
布尔
布尔类型只有两种值 True 真 和 False 假
a = True
print(type(a))
b = False
print(type(b))
注释
单行注释
# 注释
文档注释
'''注释注释
'''"""注释注释
"""
输入输出
输入
input()
使用 input() 函数进行输入操作,当程序运行到 input() 函数时
会将括号内的内容先打印出来,然后等待用户进行输入,当用户敲下回车时,输入结束
输出
print()
使用输入输出
# 定义一个整型变量 num
num = 0# 输入一个整型数据 将其赋值给 num 变量
num = input('请输入一个整数: ')# 输出 num 变量
print(f'你输入的整数是 {num}')
使用 f 作为前缀的字符串,称为 f-string
这种字符串可以在字符串里使用 { } 将变量或表达式内嵌到字符串中
运算符
算术运算符
加法 +
减法 -
乘法 *
除法 /
取模 %
乘方 **
除法取整 //
关系运算符
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
带有这种关系运算符的表达式结果一般为布尔类型 True or False
a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

除了判断数字也可以判断字符串,字符串的大小由 abc~xyz 的字典序决定,越后越大
a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

逻辑运算符
and 并且
or 或者
not 取反
a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)

赋值运算符
# 直接赋值
a = 10# 从右往左 链式赋值
a = b = 10# 多元赋值
a, b = 10, 20
a += 1 ( a = a + 1 )
a -= 1 ( a = a - a )
a *= 1 ( a = a * 1 )
a /= 1 ( a = a / 1 )
a %= 1 ( a = a % 1 )
身份运算符
is 是
is not 不是
成员运算符
in 在
not in 不在
位运算符
& 按位与
| 按位或
^ 按位异或
<< 左移
>> 右移
条件语句
if 条件 :操作操作下一条语句
if 条件 :操作操作else:操作操作
if 条件 :操作操作elif 条件 :操作操作elif 条件 :操作操作else:操作操作
空语句
pass
a = int(input("请输入一个整数:"))if a == 1:print("hello")
a = int(input("请输入一个整数:"))if a != 1:passelse:print("hello")
上面两种实现方式是等价的
循环语句
while 条件 :循环内容循环内容# 例子 打印 1 ~ 10
num = 1while num <= 10:print(num)num += 1
for 循环变量 in 可迭代对象:循环内容循环内容# 例子 打印 1 ~ 10
for i in range(1, 11):print(i)
break 跳出循环 结束整个循环
continue 跳过本次循环 进入下次循环
函数
函数定义 函数调用
# 定义函数
def 函数名(参数):函数内容函数内容return 返回值# 调用函数函数名(参数)
# 定义函数
def add(x, y):return x + y# 调用函数
sum(1, 1)
参数默认值
可以给参数设置初始值
def add(x = 1, y = 1):return x + yprint(add())
print(add(5, 5))

关键字传参
def test(x, y):
print(f'x = {x}')
print(f'y = {y}')
test(x=10, y=20)
test(y=100, x=200)
列表
多个元素的一个顺序集合
创建列表
alist = []alist = list()
列表可以存放不同类型的元素
alist = [1, 0.5, "hello", True]
访问元素
通过下标访问符 ’ [ ] ‘ 来获取列表中的元素,列表的下标从 0 开始
下标可以为负数,表示倒数,-1 为 倒数第一
alist = [1, 2, 3, 4, 5]
print(alist[2])
修改元素
alist = [1, 2, 3, 4, 5]
alist[2] = 6
print(alist[2])
切片操作
将列表切出一个子列表,使用 [ : ] 进行切片
alist = [1, 2, 3, 4, 5]
print(alist[1:4])
从列表的 1 下标开始,到 4 下标前停下,即 [1, 4) 前闭后开区间
其他切法
省略前后边界
print(alist[1:]) # 省略后边界, 表示获取到列表末尾
print(alist[:-1]) # 省略前边界, 表示从列表开头获取
print(alist[:]) # 省略两个边界, 表示获取到整个列表
设置步长
alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(alist[::1])
print(alist[::2])
print(alist[::3])
print(alist[::5])
alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(alist[::-1])
print(alist[::-2])
print(alist[::-3])
print(alist[::-5])
遍历列表
for elem in alist:
print(elem)
for i in range(0, len(alist)):
print(alist[i])
i = 0
while i < len(alist):
print(alist[i])
i += 1
新增元素
append 方法,向列表的最后添加一个元素
alist.append('hello')
insert 方法,向列表中的指定下标位置插入一个元素,原来的元素向后移
# 在 1 下标处插入 hello
alist.insert(1, 'hello')
查找元素
in 操作符可以判定元素是否在列表中,返回布尔类型
alist = [1, 2, 3, 4]
print(2 in alist)
print(5 in alist)
index 方法,查寻元素在列表中的下标。若不存在,则抛出异常
alist = [1, 2, 3, 4]
print(alist.index(2))
print(alist.index(5))
删除元素
pop 方法可以删除最末尾的元素
alist = [1, 2, 3, 4]
alist.pop()
print(alist)
pop 方法按照下标删除
alist = [1, 2, 3, 4]
alist.pop(2)
print(alist)
remove 方法直接移除对应元素
alist = [1, 2, 3, 4]
alist.remove(2)
print(alist)
列表连接
+ 号连接 会生成一个新的列表,不会影响到旧列表
alist = [1, 2, 3, 4]
blist = [5, 6, 7]
print(alist + blist)
extend 方法连接,把一个列表拼接到另一个列表的后面
alist = [1, 2, 3, 4]
blist = [5, 6, 7]
alist.extend(blist)
print(alist)
print(blist)
元组
列表和元组是十分相似的,只是列表中存放的元素是可以修改的,而元组中存放的元素是在创建时就确定下来的不能修改
元组创建
atuple = ()
atuple = tuple()
元组支持:下标访问、切片操作、遍历、in、index、+ 等
元组不支持:修改元素、新增元素、删除元素、extend 等
字典
字典用于存储键值对,键 key 的类型可以是各种类型
创建字典
a = { }
b = dict()print(type(a))
print(type(b))
设置键值对
键值对之间使用 ' , ' 隔开
键与值之间使用 ' : ' 隔开
student = { 'id': 1, 'name': 'zhangsan' }
print(student)
查找元素
使用 in 判断 key 是否在字典中存在
student = {'id': 1,'name': 'zhangsan',
}print('id' in student)
print('score' in student)
使用 [ ] ,通过 key 获取 value
student = {
'id': 1,
'name': 'zhangsan',
}
print(student['id'])
print(student['name'])
新增/修改元素
使用 [ ] ,通过 key 修改 value,如果 key 不存在则在字典中新增该元素
student = {'id': 1,'name': 'zhangsan',
}student['score'] = 90
print(student)
student = {'id': 1,'name': 'zhangsan','score': 80
}student['score'] = 90
print(student)
删除元素
使用 pop 方法,通过 key 删除对应元素
student = {'id': 1,'name': 'zhangsan','score': 80
}student.pop('score')
print(student)
遍历字典元素
使用 for 循环,获取 key ,通过 key 访问 value
student = {'id': 1,'name': 'zhangsan','score': 80
}for key in student:print(key, student[key])
获取字典中的 key 和 value
使用 keys 方法可以返回一个类似元组的 dict_keys 类型,它会包含字典中的所有 key 值
student = {'id': 1,'name': 'zhangsan','score': 80
}print(student.keys())
使用 values 方法也是返回一个类似元组的 dict_values 特殊类型
student = {'id': 1,'name': 'zhangsan','score': 80
}print(student.values())
使用 items 方法,获取到字典内的所有键值对
student = {'id': 1,'name': 'zhangsan','score': 80
}print(student.items())
文件
打开文件
使用 open 函数打开文件
f = open('d:/test.txt', 'r')
第一个参数为路径
第二个参数为打开方式,' r ' 读、' w ' 写、' a ' 追加
关闭文件
使用 close 方法关闭打开的文件
f.close()
写文件
使用 write 方法将数据写入文件中
f = open('d:/test.txt', 'w')
f.write('hello')
f.close()
' r ' 方式使用 write 方法会报错,抛出异常
' w ' 方式使用 write 会覆盖原有的内容
' a ' 方式使用 write 在原本的内容后面追加内容
f = open('d:/test.txt', 'w')
f.write('hello')
f.close()f = open('d:/test.txt', 'a')
f.write('world')
f.close()
读文件
使用 read 方法从文件中读取数据
f = open('d:/test.txt', 'r')
result = f.read(2)
print(result)
f.close()
参数为读取多少个字符
多行文本可使用 for 循环一行一行读
f = open('d:/test.txt', 'r')
for line in f:
print(f'line = {line}')
f.close()
使用 readlines 将整个文件读取出来,返回一个列表
f = open('d:/test.txt', 'r')
lines = f.readlines()
print(lines)
f.close()
上下文管理器
上下文管理器可以关闭我们忘记关闭的文件
使用 with 语句打开文件,当 with 内的代码执行完毕后,就会自动关闭方法
with open('d:/test.txt', 'r', encoding='utf8') as f:lines = f.readlines()print(lines)相关文章:
【Python】基本语法
数据类型 通过 print(type(x)) 可以输出 x 的数据类型,type() 函数可以获取数据类型 整数 a 10 print(type(a)) 浮点数 a 0.5 print(type(a)) 字符串 a hello print(type(a)) 获取字符串长度 a hello print(len(a))字符串拼接 a hello b world prin…...
用栈实现队列(图示超详解哦)
全文目录引言用栈实现队列题目介绍思路简述实现栈的部分队列的部分创建队列判断队列是否为空在队列尾入在队列头出访问队头元素释放队列总结引言 在上一篇文章中,我们了解了用两个队列实现栈。在这篇问章中将继续介绍用两个栈实现队列的OJ练习: 用栈实现…...
Spring - Spring 注解相关面试题总结
文章目录01. Spring 配置方式有几种?02. Spring 如何实现基于xml的配置方式?03. Spring 如何实现基于注解的配置?04. Spring 如何基于注解配置bean的作用范围?05. Spring Component, Controller, Repository, Service 注解有何区别…...
【数据结构】实现二叉树的基本操作
目录 1. 二叉树的基本操作 2. 具体实现 2.1 创建BinaryTree类以及简单创建一棵树 2.2 前序遍历 2.3 中序遍历 2.4 后序遍历 2.5 层序遍历 2.6 获取树中节点的个数 2.7 获取叶子节点的个数 2.8 获取第K层节点的个数 2.9 获取二叉树的高度 2.10 检测值为val的元素是否…...
代码随想录算法训练营第五十二天| ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组
300.最长递增子序列 看完题后的思路 dp[i] [0,i]子数组中,以nums[i]结尾的子序列的长度 dp[i]dp[j]1 j从i-1向0遍历,在所有nums[j]<nums[i]中dp[j]最大 初始化 dp[0]1 代码 class Solution {public int lengthOfLIS(int[] nums) {if (nums.length0){return 0;}int[] dpne…...
手机验证发送及其验证(基于springboot+redis)保姆级
在Java开发中,发送手机验证码时需要考虑以下几个问题: 验证码的有效期:验证码应该有一定的有效期,一般设置为几分钟或者十几分钟。过期的验证码应该被认为是无效的,不能用于验证用户身份。手机号码格式的校验…...
【JavaScript 逆向】数美滑块逆向分析
声明本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!案例目标验证码:aHR0cHM6Ly93d3cuaXNodW1laS5jb20vbmV3L3Byb2R1Y3QvdHcvY29kZQ以上均做了脱敏处理,Base64 编码及解码方…...
多任务之线程
文章目录一、多任务是什么?二、多任务-线程四、通过继承Tread类完成创建线程五、资源竞争六、同步与互斥锁七、对峙与避免死锁一、多任务是什么? 多个函数同时执行一件事情就是多任务,没有多任务的时候任务执行都是按照顺序的,而…...
(数字图像处理MATLAB+Python)第二章数字图像处理基础-第二节:色度学基础与颜色模型
文章目录一:颜色匹配二:CIE 1931-RGB系统三:CIE 1931标准色度系统四:CIE 1976Lab均匀颜色空间五:孟塞尔表色系统(1)孟塞尔明度(Value,记为V)(2)孟塞尔彩度(Ch…...
【华为OD机试 2023最新 】 网上商城优惠活动(C++)
文章目录 题目描述输入描述输出描述备注用例题目解析C++题目描述 某网上商场举办优惠活动,发布了满减、打折、无门槛3种优惠券,分别为: 每满100元优惠10元,无使用数限制,如100199元可以使用1张减10元,200299可使用2张减20元,以此类推;92折券,1次限使用1张,如100元,…...
记一次CentOS 8 部署packstack部署OpenStack失败案例,请直接看最后
首先你需要一台安装好CentOS8 的虚拟机,相关参数如图。两块网卡,网卡1 NAT IP 192.168.100.100 GW192.168.100.2 网卡2 可不做配置。能ping通百度。创建完成虚拟机记得打好快照。 开机编辑基本配置环境变量 [rootlocalhost ~]# nmcli connection show NA…...
【2023春招】美团技术岗笔试10min+AK
随手投递了前端&移动端,笔试2道算法+选择+行测题(为什么笔试会有行测题?) 目录 T1-火车栈结构 题意 输入描述 输出描述 样例 AC_Code T2-春游...
Echarts实现图表自适应屏幕分辨率
一:简介 之前做项目的时候要实现echarts图表随浏览器窗口大小变化而改变,echarts本身提供了一个resize()方法,然后我们需要用一个函数实现浏览器窗口监听,最初我选用的是window.onresize方法,当页面只有一个图表时可以…...
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
相关链接 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二 1 题目 一.问题…...
【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛客观题以及详细题解
题1 概念题。 USRAT:异步串口通信,常用于数据传输;SW-DP:SWD 的全称应该是 The Serial Wire Debug Port (SW-DP),也就是串行调试端口,是 >ARM 目前支持的两种调试端口之一;JTAG-DP:另一个调试…...
java中Map遍历的4种方式
目录 1、map.entrySet()方式 2、map.keySet()方式 3、map.values()方式 4、forEach方式 本文以如下map案例: Map<String, String> map new HashMap<>(); map.put("student1", "张三"); map.put("student2", "…...
GCC 编译器的主要组件和编译过程
主要组件: 分析器:分析器将源语言程序代码转换为汇编语言。因为要从一种格式转换为另一种格式(C到汇编),所以分析器需要知道目标机器的汇编语言。 汇编器:汇编器将汇编语言代码转换为CPU可以执行字节码。 …...
蓝桥杯冲刺 - week2
文章目录💬前言🌲day1最大和 (DP质因数分解)901. 滑雪 - 记忆化搜索🌲day21227. 分巧克力 - 二分🌲day31221. 四平方和 - 空间换时间1230. K倍区间🌲day41076. 迷宫问题 - 路径2017-迷宫-填空🌲day5848. 有…...
第十四届蓝桥杯三月真题刷题训练——第 20 天
目录 第 1 题:纸张尺寸 问题描述 输入格式 输出格式 样例输入1 样例输出1 样例输入 2 样例输出 2 运行限制 代码: 解析: 第 2 题:最大数字 第 3 题:全排列的价值_递推公式 问题描述 输入格式 输出格式…...
【C++】科普:C++中的浮点数怎么在计算机中表示?
这里我们以8.25这个数为例说明计算机时如何存取float类型的数据的: float a 8.25;引言 1. 所占位数 首先,明确一个概念,float类型的数据在常规计算机中通常占4个字节,也就是32位。其内存分布如图: 位字段说明所占位…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
