文章目录
- 1. 输出
- 1. 占位输入
- 2. 精确小数位数输出
- 2. 条件判断
- 1. match判断
- 3. 循环
- 1. while循环
- 2. for 循环
- 3. 循环控制
- 4. 列表操作
- 5. 变量
- 6. 函数
- 1. 不记名函数lambda
- 2. 内置函数
- 3. 递归函数
- 4. 参数
- 5. 模块
- 1. 正则
- 2. 时间
- 3. 绘图turtle
- 3. shocket套接字
1. 输出
1. 占位输入
# 语法
print("年%d,月%d,日%d" %(year,month,day)
print(f"年{year},月{month},日{day}")
2. 精确小数位数输出
print("金额:%.2f" %(money))
2. 条件判断
1. match判断
x = ""
match x:case 条件1:print("满足条件1")case 条件2:print("满足条件2")case 条件3:print("满足条件3")case _:print("其他条件")
3. 循环
1. while循环
# 语法初始条件
while 条件:print("执行内容") 退出循环条件
2. for 循环
for i in range():print(”执行内容“)
3. 循环控制
whiel 条件:print("执行内容")breakfor i in range():print(”执行内容“)break
4. 列表操作
list = []
# 增
list.append()
list.extend()
list.insert()#删
list.pop()
list.remove()
list.clear()# 改
list.insert(index,obj)#排序
list.sort()
list.reverse()# 计数
list.count()
5. 变量
局部变量: 是在函数内定义的变量,只能在函数内部使用
全局变量: 实在函数外定义的变量,所有函数内部都可以使用
6. 函数
1. 不记名函数lambda
# 语法
lambda 参数:函数体
2. 内置函数
#绝对值 bs()'''
进制转换
bin() 二进制
oct() 八进制
hex() 十六进制
'''# 去除字符串的‘’
eval()
3. 递归函数
#语法
def func(n):#退出递归条件#函数返回return XX# 继续调用函数fun(n)
def get_combination(ll,start):""":param ll: 排序的列表:param start: 起始位置一般为0:return: 空"""end=len(ll) #记录元素个数if start==end: #递归的结束条件print(ll)else:i=start #指向本次需要排列的第一个位置(本轮需要固定的位置)# 循环排列的序列中的每一个数,for n in range(start,end):# 依次交换数据ll[n],ll[i]=ll[i],ll[n]#递归调用get_combination(ll,start+1)# 回到上一步,交换数据ll[n],ll[i]=ll[i],ll[n]#1*2*3=6
get_combination([1,2,3],0)#1*2*3*4=24
get_combination(['red','yellow','green','blue'],0)
4. 参数
实参: 函数列表中需要传入的参数
形参: 函数内部定义的参数
def func():global x # 申明全局变量
5. 模块
1. 正则
优点: 速度快,效率高,准确性高正则的
缺点: 新手上手难度有点儿高
正则表达式使用的网站:
https://www.mklab.cn/utils/regex
https://tool.oschina.net/regex/
'''
2. 常用的元字符
. 匹配除换行符以外的任意字符, 未来在python的re模块中是一个坑
\w匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
alb 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[…] 匹配字符组中的字符
[^…]匹配除了字符组中字符的所有字符3. 贪婪匹配
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次贪婪匹配
.* 尽可能多的匹配惰性匹配
.*? 尽可能少的匹配 ->回溯
<div> .*?<\div>
'''
#4.re模块的使用
# 常用模块的使用
import re# findall直接返回匹配结果,以列表形式返回
res = re.findall(r"\d+","我今年28岁了,我有100万")
print(res)# 迭代器
res1 = re.finditer(r"\d+","我今年28岁了,我有100万")
for item in res1: #从迭代器中拿到内容print(item.group()) #从匹配结果中拿到数据# 只能匹配到第一次匹配的内容
res2 = re.search(r"\d+","我今年28岁了,我有100万")
print(res2.group())#从开头开始匹配
res3 = re.match(r"\d+","我今年28岁了,我有100万")
print(res3)#预加载,提前把正则对象加载完毕
obj = re.compile(r"\d+")
#使用加载好的正则
res4 = obj.findall("我有100元,借给你50元")
print(res4)
2. 时间
import time# 获取当前时间
current_time = time.time() # 获取当前时间戳
print(current_time)# 将时间戳转换为可读形式
readable_time = time.ctime(time.time())
print(readable_time)# 计算时间差:
start_time = time.time()
time.sleep(2) # 模拟耗时操作
end_time = time.time()
elapsed_time = end_time - start_time # 计算时间差
print(f"elapsed time: {elapsed_time} seconds")# 设置时间(需要管理员权限):
# 设置时间为2023年1月1日0时0分0秒
time.struct_time(time.mktime((2023, 1, 1, 0, 0, 0, -1, -1, -1)))
3. 绘图turtle
import turtle# 步骤一:创建画布
my_screen = turtle.Screen() # 创建画布
my_turtle = turtle.Turtle() # 创建海龟
# 步骤二:设置画布属性
# 可以设置画布的大小和背景颜色turtle.screensize(800, 600, "green") # 设置画布大小为800x600像素,背景颜色为绿色
# 步骤三:设置画布属性
# 可以设置海龟的移动速度、画笔颜色和线宽等属性
pythonCopy Code
my_turtle.speed(10) # 设置海龟移动速度为10
my_turtle.pencolor("red") # 设置画笔颜色为红色
my_turtle.width(5) # 设置画笔线宽为5像素
# 步骤四:控制海龟绘图
# 前进、后退、转向等
for _ in range(4):my_turtle.forward(100) # 海龟向前移动100像素my_turtle.right(90) # 海龟右转90度
# 步骤五:结束绘图
# 完成绘图后,可以通过以下代码保持绘图窗口打开turtle.mainloop() # 保持绘图窗口打开,不自动关闭
3. shocket套接字
-
创建服务端
import socket# 创建对象 sk = socket.socket()# 绑定ip和端口号 sk.bind(("0.0.0.0",1234))# 设置监听 sk.listen(5)# 等待客户端连接 conn,addr = sk.accept()print(f"客户端信息{conn},客户端地址{addr}")while True:accept_msg = conn.recv(1024)print(f"收到客户发送的消息{accept_msg.decode('utf-8')}")send_msg = f"已经收到客户端发送的信息:{accept_msg.decode('utf-8')}"conn.send(send_msg.encode("utf-8"))
-
创建客户端
import socket# 创建对象 sk = socket.socket()# 连接服务器 sk.connect(("127.0.0.1",1234))while True:send_msg = input("请输入需要发送的str:")if send_msg == "end":break# 发送数据服务器sk.send(send_msg.encode("utf-8"))# 接收服务器相应accept_msg = sk.recv(1024)print(f"服务器的相应数据:{accept_msg.decode('utf-8')}")