day01
python语言是一种面向对象的解释性计算机程序设计语言
面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用
面向对象:把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事务在整个解决问题的步骤中的行为。
day02
注释:
单行注释:# 多行注释:ctrl+? 或者 """ """ 回到上一步:ctrl+z 前进到下一步:ctrl+y代码中的波浪线:
灰色波浪线:代码不够规范 绿色波浪线:单词拼写错误或警告信息 红色波浪线:报错 语法检查报错解决:
1.先看是什么错(红色最后一行) 2.定位到报错的那一行,如果这行没错,查看上一行有没有错 SyntaxError: invalid synatx 这是语法错误(多写或者少写了什么符号,或者其他小错误) NameError: name 'xxxx' is not defined 这是命名错误,有可能是上面没有定义这个名字,或者是这个方法名和python内置的方法名或属性不匹配 IndentationError: unexpected indent 缩进错误 空格多了 end语法:
print('tan',end='') print('ke') 输出结果:tanke 不加end 输出结果: tan ke变量:内存条给要存储的数据开辟了一个小小的房间
概念:描述计算机中的数据存储空间 作用:在计算机内存中保存数据命名规则:
1、只能由数字,字母,_(下划线)组成 2、不能以数字开头 3、不能是关键字 4、区分大小写 变量 = 值命名约定:
下划线分割法: user_name = 1 print(user_name) 大驼峰命名法: FristName = 2 print(FristName) 小驼峰命名法: secondName = 3 print(secondName)lg_one:
_ _ a = 1 编程中一个等号代表赋值,把后面的结果赋值给前面的变量,相当于用_ _a来表示这个1
编程中先看等号后面的内容,再看前面的变量
lg_two:
y=1 x=10 x=x+1 # x=11 y+x+1 print(x+y) 输出:12day03
浮点数
a=1.11212整型
b=2print(a+b) #3.11212复数
c=2.2+1j #分成实部和虚部,虚部带一个j print(c) #(2.2+1j)布尔类型
#True在做运算的过程中,会把它变成1 #False在做运算的过程中,会把它变成0t=True f=False x=b+f print(x) #1 #在作为判断条件时,结果只要是非0数字,那么就相当于是True #在作为判断条件时,如果是0,那么就相当于是False # name=100 # f=False # t=True # print(name+f-t) #99字符串
a='123' print(a) #123 b="123" print(b) #123 c="""""" print(c) # a="123" d=123 a=int(a) #使用int() 进行强制转化为数字类型 print(d+a) #246 a="123" d=123 d=str(d) #使用str() 进行强制转化为字符串类型 print(d+a) #123123格式化输出:
a=1.5 b=1 print(str(a)+'+'+str(b)+'='+str(a+b)) #1.5+1=2.5 print('%.1f+%d=%.1f'%(a,b,a+b)) #1.5+1=2.5 if 1+1: print(123) #123day04
算术运算符:
a=12 b=3 c=7 print(a+b) #15 print(a-b) #9 print(a/b) #4.0 print(a*b) #36 print(a**b) #**表示:a的b次方 a*a*a a=12 b=3.1 c=7 print(a/b) #4.0两个数相除,得到的结果是浮点数 print(a//b) #//表示向下取整比较运算符:
a=12 b=31 c=12 print(a>b) #False print(a<b) #True print(a==b) #False print(a>=b) #False print(a<=b) #True 满足其中一个答案即为True逻辑运算符:
and逻辑"与"两个为真才为真:
print(True and True) True print(True and False) False print(False and True) False print(False and False) Falseor逻辑"或"两个为假才为假:
print(True or True) True print(True or False) True print(False or True) True print(False or False) Falsenot逻辑"非"真变假,假变真:
print(not True) False print(not False) Truelg_one:
a=12 b=31 c=12 print(a>b) #False print(a<b) #True print(a==b) #False print(a>=b) #False print(a<=b) #True print(a!=b) #True print(a<b and a== b) #False print(a<b and a!=b ) #True print(a<b or a==b ) #True print(not a<b ) #False t=Ture f=False printf(True and False) #False常用的ASCLL码值:
数字0-9 对应ASCLL码 48~57 字母A-Z 对应ASCLL码 65~90 字母a~z 对应ASCLL码 97~122将字符转化为ASCLL码:
a='A' b=70 print(ord(a))#65 #ord()的作用是将字符转化为ASCLL码 print(chr(b))#F #chr()的作用就是将ASCLL码转化为字符如何在控制台上使用input输入两个1,得到1+1=2:
a=int(input('请输入第一个数:')) b=int(input('请输入第二个数:')) print("%d+%d=%d"%(a,b,a+b))day05
type()函数:验证数据类型:
a=type(1) print(a) #<class 'int'> b=type('tk') print(b) #<class 'str'> c=type(1.23456) print(c) #<class 'float'>math方法:
求绝对值:
a=-5 math.fabs(a) #fabs()求绝对值 5.0 abs(a) #内置函数abs求绝对值 5 注:若a是浮点数,则abs返回浮点数值。用round(x)四舍五入,x为浮点数:
round(x)不是math模块里的函数,而是默认内置函数,但是其可以对浮点数进行四舍五入。 round(8.5) 8 round(3.4) 3求和:
a=(4,5,6) math.fsum(a) #求集合里的元素的和 15.0b=(4,5,6) sum(b) 15 c=(1.2,2.2,3.1) sum(c) 6.5 fsum(x)函数与内置函数sum(x)作用类似,唯一区别:前者一律返回浮点数,后者整型元素返回整型和,浮点数元素返回浮点数和。
pow():方法返回 xy(x的y次方) 的值:
a=pow(2,3) print(a)内置函数:
ord(c),其中c为字符,返回对应的ASCII码与ord()对应,chr()参数为一个0~255的数字,返回对应的字符str.upper(),将字符串str中的小写字母变成大写sum(a[n]),其中a为可迭代对象,[]中的内容表示可选参数。该函数做的事情是,先计算a中的元素和,再将计算的结果加n,得到最终结果。input:接受一个标准输入数据,返回为 string 类型。随机数:random()
返回0与1之间的随机浮点数N,范围为0<=N<1.0 import random # 生成一个随机数 print("random():", random.random()) # 生成第二个随机数 print("random():", random.random()) 生成: random(): 0.47857371325509135 random(): 0.3781973191234125 random(): 0.9557827690139428 random(): 0.12921621403507322random.randint(a,b) 返回一个随机的整数N,N的取值范围为a<=N<=b。需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值 import random print(random.randint(12, 20)) # 生成一个随机数N,N的取值范围为12<=N<=20 print(random.randint(20, 20)) # 生成的随机数为N,N 的结果永远为20 print(random.randint(20, 10)) # 该语句是错误语句,下限a必须小于上线brandom.randrange(start, end, step) 返回指定递增基数集合中的一个随机数,基数默认值为1。 start参数用于指定范围内的开始值,其包含在范围内; end参数用于指定范围内的结束值。其不包含在范围内; sep表示递增基数上述这些参数必须为整数; 例如,random.randrange(10,100,2)相当于从[10,12,14,16…98]序列中获取一个随机数。 import random print(random.randrange(10, 100, 2)) #96 54 38day06:
If 判断条件1: 执行语句 elif 判断条件2: 执行语句2 else: 执行语句3 ##或只要if判断 或者是if-else 判断 或者是if-elif-else 判断if语句的应用:
# 成绩的优良 # (判断如果分数大于等于90小于100为优秀,大于等于80小于90为良好,大于等于70小于80为及格,小于70为不合格) grade = int(input("请输入分数")) if 100 > grade >= 90: print("优秀") elif 90 > grade >= 80: print("良好") elif 80 > grade >= 70: print("及格") elif 70 > grade: print("不合格")#减肥计划: activity = input("请输入星期数") if activity =="1": print("跑步") elif activity == "2": print("游泳") elif activity == "3": print("健身") elif activity == "4": print("动感单车") elif activity == "5": print("爬山") elif activity == "6": print("好好吃一顿") elif activity == "7": print("拳击") else : print('没有星期八啦')#判断一个数是偶数还是奇数还是负数 number = int(input("判断")) if number >= 0: if number%2==0: print("偶数") else: print("奇数") else : print("负数")#外卖结算程序 #满100-50 50-20 30-10 会员打8折 vip = input("是否为会员:") price = float(input("请输入价钱")) if price>=100: price-=50 elif price>=50: price-=20 elif price>=30: price-=10 if vip == "是": price*=0.8 print(round(price,2)) else: print(price)day07:
练习:
#判断给定年份是否是闰年 year = int(input("请输入年份")) if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: print("闰年") else: print("平年")while循环:
例题讲解:
# 循环: 倒计时 import time count = 5 while count >= 1: #循环范围 print(count) count -= 1 #循环怎么变,自增还是自减 time.sleep(1) print("boom boom~~~~~")# 循环: 0-100 的偶数 count = 100 while count >= 0: # 循环范围 print(count) count -= 2 # 循环怎么变,自增还是自减# 循环: 数字累加求和 count = 0 sum = 0 while count <= 100: sum += count count += 1 print(sum)# 循环: 三位数中,35的倍数的数值之和 count = 100 sum = 0 while count <= 999: if count % 35 == 0: sum += count count += 1 print(sum)# 循环: 三位数中,回文(121 131 141 151) count = 101 while count <= 999: if count // 100 == count % 10: print(count) count += 1# 循环:break 终止循环 import time count = 0; while count <= 5: time.sleep(1) print(count) if count == 3: break count += 1# 循环:countinue import time count = 0; while count <= 5: time.sleep(1) print(count) if count == 3: continue #遇到countinue,下面的代码不会执行 count += 1 输出:0 1 2 3 3 3 3 ...... # 循环:countinue import time count = 0; while count <= 5: time.sleep(1) count += 1 if count == 3: continue #遇到countinue,下面的代码不会执行 print(count) 输出:1 2 4 5 6day08:
换行:
i=0 while i<3: j=0 while j<3: print(j,end=" ") ##end=""不换行 j+=1 print() ##换行 i+=1#九九乘法表:
i=1 while i<10: j=1 while j<=i: print("%d*%d=%d"%(j,i,i*j),end=" ") j+=1 print() i+=1 输出: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 # for in : for i in "tanke": print(i,end=" ") 输出: t a n k erange()内建函数:
range(start,end,step =1)返回一个包含所有K的列表,start<=K<end,K每次递增step for i\ in range(1,6): #1,2,3,4,5 如果不写第一个数字那么,默认从0开始 print(i,end=" ") #反斜杠,超长换行符# 例题尝试:
for j in\ range(3,1,-1): print(j, end=" ") 输出:3 2 for j in\ range(3,1): print(j, end=" ") 输出:1 4 7 利用for in求0-100奇数偶数和以及阶乘:
sum1=0 for ou1 in range(0,101,2): sum1+=ou1 print(sum1) 输出:2550 sum2=0 for ou2 in range(1,100,2): sum2+=ou2 print(sum2) 输出:2500 b=int(input("输入")) c=1 for i in range(1,b+1): c*=i print(c) 输入:9 输出:362880# 注册功能 i = 3 name = str(input("请输入想注册的账号:")) print("账号注册成功,请输入密码:") passwd = str(input("")) print("用户注册成功") print("您的账号是:%s" % name) print("您的密码是:%s" % passwd) # 登录功能(让用户输入用户名、密码对比) a = str(input("账号:")) while a == name: while i > 0: b = str(input("密码:")) if b == passwd: print("登录成功") i=-1 break else: i -= 1 print("密码输入错误,你还有%d次机会" % i) if i == 0: print("密码错误次数过多,请15分钟之后再试") day09:
# 有猜数字游戏,其游戏规则为: # 1). 程序内置一个 1 到 100 之间的数字作为猜测的结果,由用户猜测此数字(仅5次机会)。 # 2). 用户每猜测一次,由系统提示猜测结果:大了、小了或者猜对了; # 3). 直到用户猜对结果,则提示游戏胜利。用户可以提前退出游戏,即,游戏过程中,如果用户录入数字0,或者超过5次机会,则游戏失败。 import random number = random.randint(1, 100) # print(number) i = 4 j = 0 while 0 <= i < 5: guess = int(input("请输入你猜的数:")) j += 1 if guess == 0: print("退出游戏成功!") i = -1 elif guess == number: print("系统提示:猜对了,游戏胜利!") i = -1 elif guess != number: i -= 1 if guess > number: print("系统提示:猜大了.") print("你还剩%d次机会" % (i + 1)) elif guess < number: print("系统提示:猜小了") print("你还剩%d次机会" % (i + 1)) if j > 4: print("系统提示:游戏失败!")day10:
#石头剪刀布游戏 import random while True: print("1:石头 2:剪刀 3:布 0:退出") a = random.randint(1, 3) if a == 1: print("电脑:石头") elif a == 2: print("电脑:剪刀") elif a == 3: print("电脑:布") b = int(input("玩家:")) if b == 0: print("游戏结束") break if (a == 1 and b == 3) or (a == 2 and b == 1) or (a == 3 and b == 1): print("玩家赢") elif a == b: print("平局") else: print("玩家输") 输出: 1:石头 2:剪刀 3:布 0:退出 电脑:剪刀 玩家:1 玩家赢 1:石头 2:剪刀 3:布 0:退出 电脑:剪刀 玩家:3 玩家输 1:石头 2:剪刀 3:布 0:退出 电脑:剪刀 玩家:2 平局 1:石头 2:剪刀 3:布 0:退出 电脑:石头 玩家:0 游戏结束输入两个数值, 求两个数的最大公约数和最小公倍数:
a, b = b, a%b 这个表达式的意思就是说,先计算=号的右边b的值,a%b的值,算好了,然后再分别赋值给a 和b就可以了
1. 最大公约数就是A和B能整除的最大的数; 2. 求最大公约数(gys)算法: 方法1: 欧几里得法(辗转相除法) 1). 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B 2). 如果C等于0,则C就是整数A和整数B的最大公约数 3). 如果C不等于0, 将B赋值给A, 将C赋值给B ,然后进行 1, 2 两步,直到余数为0, 则可以得知最大公约数。 # 最大公约数(gcd)和最小公倍数(lcm) a = int(input("请输入第一个数:")) b = int(input("请输入第二个数:")) while a % b != 0: a, b = b, a % b else: gcd = b print(b) lcm = a*b/gcd print(lcm)序列:
list.remove() 删除列表中的指定元素。 list.pop() 根据元素的索引值进行删除指定元素。 list.clear() 清空列表里面的所有元素。 list.sort() 进行升序排列 list.insert(index, object) 在指定位置添加元素 list.append(元素) 直接在列表中加元素 list.index() 查看某个列表元素的下标 list.count() 查看某个列表元素出现的次数 list.len() 测量列表的长度 del(list[]) 列表的删除 a = [1, 2, "st", ["A", 1, 3], ['*&*', 't', ' ', 'k', 3]] i = 0 while 0 <= i: print(a[i]) i += 1; if i == 5: break print(a[4][3]) print() list4 = [1, 2, [1, 2, 3, [6, 1]]] print(list4[2][3][0]) (列表)末尾增:
列表.append(元素)##list.append(1)使用列表 append(元素) 来往列表的末尾增加元素: list=[1,2,3,[1,'a']] list.append(1) print(list) 输出:[1, 2, 3, [1, 'a'], 1] list.append('str') print(list) 输出:[1, 2, 3, [1, 'a'], 1, 'str'] list.append([1,2,'a','b']) print(list) 输出:[1, 2, 3, [1, 'a'], 1, 'str', [1, 2, 'a', 'b']](列表)插入增:
列表.insert(1,'a') ## 1是第几个逗号之后插入 ## 'a'是要插入的东西list1 = [1, 2, 3, 4] list1.insert(1,'a') print(list1) 输出:[1, 'a', 2, 3, 4]list2 = [1, 2, 3, 4] list2.insert(3,"nihao") print(list2) 输出:[1, 2, 3, 'nihao', 4]list3=[1,'2','3'] list3.insert(3,'nihao') print(list3) 输出:[1, '2', '3', 'nihao']##怎么样在列表的最里面的1,2,3,的后面加上一个4 list4 = [1, 2, 3, [1, 2, 3, [1, 2, 3]]] list4[3][3].append(4) print(list4) list4[3][3].insert[3,4] print(list4) 输出:[1, 2, 3, [1, 2, 3, [1, 2, 3, 4]]](列表)替换:
list1 = [1, 2, 3, 4, 5] list1[2] = 6 ##将第二个逗号后面的元素替换成6 print(list1) 输出:[1, 2, 6, 4, 5] list1[4]="nihao" ##将第4个逗号后面的5改成"nihao" print(list1) 输出:[1, 2, 5, 4, 'nihao'](列表)删除:
列表.remove(元素)##列表的删除功能 list1=[1,2,3,4,5] list1.remove(5) ##删除列表最末尾的5 print(list1) 输出:[1, 2, 3, 4] ## ##通过下标删元素 users = ['root','user'] users.pop(0) print(users)users = ['root','user'] password=['123','456'] #列表.index(元素) 即可得到一个下标的结果 UserIndex=users.index('root') #怎样通过UserIndex获取到password中对应的密码 password.pop(userIndex) print(password)#切片 # list_arr1 = [1, 2, 3, 67, 7] # print(list_arr1[-1]) # # list_arr2 = [1, 2, 3, 67, 7] # print(list_arr2[-1:]) # # list_arr3 = [1, 2, 3, 67, 7] # print(list_arr3[:-1]) # # list_arr4 = [1, 2, 3, 67, 7] # print(list_arr4[:-2:]) # # list_arr5 = [1, 2, 3, 67, 7] # print(list_arr5[:-2]) # # list_arr6 = [1, 2, 3, 67, 7] # print(list_arr5[-2:])# list=[1,2,3,4,5,6] # list.reverse() #列表中的元素反置 # 输出:[6, 5, 4, 3, 2, 1] # length=len(list) #测列表的长度 # print(length) # aNum = [5, 7, 99, 1, 4, 100, 18, 76] # ou = [] # ji = [] # for i in aNum: # if i % 2 == 0: # ou.append(i) # else: # ji.append(i) # ou.sort() # 升序 # ji.sort(reverse=True) # 降序 # ou.extend(ji) # 拼接 # print(ou)列表案例:
# list=[1,2,3,4,5,6] # list.reverse() #列表中的元素反置 # 输出:[6, 5, 4, 3, 2, 1] # length=len(list) #测列表的长度 # print(length) # aNum = [5, 7, 99, 1, 4, 100, 18, 76] # ou = [] # ji = [] # for i in aNum: # if i % 2 == 0: # ou.append(i) # else: # ji.append(i) # ou.sort() # 升序 # ji.sort(reverse=True) # 降序 # ou.extend(ji) # 拼接 # print(ou)# 会员信息系统 import time print("会员信息管理系统".center(26, '*')) admin_user = 'tan' admin_password = 'ke' list_zh = [] list_pwd = [] i=3 while i: user_input = input('请输入管理员账号:') pwd_input = input('请输入管理员密码:') if user_input == admin_user and pwd_input == admin_password: print('管理员登录成功!'.center(16, '☆')) print('欢迎回来'.center(20, '☆')) time.sleep(2) while True: print(""" ☆☆☆☆☆☆会员操作☆☆☆☆☆☆ 1- ☆☆☆☆☆☆添加会员信息☆☆☆☆☆☆ 2- ☆☆☆☆☆☆删除会员信息☆☆☆☆☆☆ 3- ☆☆☆☆☆☆查看会员信息☆☆☆☆☆☆ 4- ☆☆☆☆☆☆修改会员信息☆☆☆☆☆☆ 5- ★★★★★退出★★★★★ """) a = int(input("您要进行的操作是:")) if a == 1: print('添加会员信息'.center(16, '★')) print() list_zh.append(input("您要添加的账号:")) list_pwd.append(input("您要添加的密码:")) print("添加成功!") time.sleep(2) elif a == 2: print('删除会员信息'.center(16, '★')) del_name = input("请输入要删除的会员账号:") if del_name not in list_zh: print("用户名%s不存在,请重新操作!" % del_name) else: listIndex = list_zh.index(del_name) list_zh.remove(del_name) list_pwd.pop(listIndex) print("用户%s删除成功!" % del_name) time.sleep(2) elif a == 3: print('查看会员信息'.center(16, '★')) print("会员信息".center(10, '☆')) listLen = len(list_zh) print('\t用户名\t密码') for i in range(listLen): print("\t%s\t%s" % (list_zh[i], list_pwd[i])) time.sleep(2) elif a == 4: print('修改会员信息'.center(16, '★')) j = input("请输入要修改的账号:") if j not in list_zh: print('要修改的账号不存在,请重新操作!') else: b = (list_zh.index(j) - 1) list_zh[b] = input("请输入修改后的账号:") while list_zh[b] == j: print("账号不能与上次相同,请重新输入:") list_zh[b] = input("") J = input("请输入要修改的密码:") if J not in list_pwd: print('要修改的密码不存在,请重新操作!') else: B = (list_pwd.index(J) - 1) list_pwd[B] = input("请输入修改后的密码:") while list_pwd[B] == J: print("密码不能与上次相同,请重新输入:") list_pwd[B] = input("") print("修改成功!") time.sleep(3) elif a == 5: print("欢迎下次使用!") print('再见'.center(20, '★')) time.sleep(3) exit() else: print(""" 1.添加 2.删除 3.查看 4.修改 5.退出""") print("系统无法识别您的指令,稍后请重新输入!") time.sleep(3) else: i-=1 print('登录失败,请输入正确的管理员账号和密码!') print('你还有%d次机会'%i)list1 = [i for i in range(1, 11, 2)] print(list1) list2 = [i * 2 for i in range(1, 11, 2)] print(list2) list3 = [i for i in range(1, 11) if i % 2 == 0] print(list3) list4 = ['a', 'b', 'c'] list4 = [i * 2 for i in list4 if i == 'b'] print(list4) x = y = [1, 2, 3] z = [1, 2, 3] print(x == y) print(x == z) # == 判断的是元素的值是否相等 print(x is y) # is 判断的是两个元素内部的id是否相等 print(x is z) print(id(x)) print(id(z)) a = b = 4 c = 4 print(a is c) # 单独的元素内部id是相同的深拷贝与浅拷贝:
import copy a = [1, 2, 3] b = [3, 4, 5] m = a # 赋值引用同一个列表内容 print(id(a)) print(id(m)) c = [a, b] print(id(c[0])) d = copy.copy(c) print(id(c[0])) print(id(d[0])) d[0].append('a') print(c) print(d) d = copy.deepcopy(c) print(id(c[0])) print(id(d[0])) d[0].append('a') print(c) print(d) # 两个变量各有各的值,互不影响 # 内存地址不同 # 改变其中元素不会影响另一个 深拷贝:
import copy a = [1, 2, 3] b = [3, 4, 5] c = [a, b] d = copy.deepcopy(c) print(id(c[0])) print(id(d[0])) d[0].append(4) print(c) print(d) # 两个变量各有各的值,互不影响 # 内存地址不同 # 改变其中元素不会影响另一个元组:
tuple1 = () # 空元组 tuple2 = ('张三', 18, 1.87) print(tuple2[0]) tuple3 = ('李四', 18, '男') print(tuple3) tuple4 = ('angel',) print(tuple4) name, age, gender = ('李四', 18, '男') print(name) print(age) tuple5 = ('asxogijwkjngoisgdsnflj') a = len(tuple5) print(a) print(tuple5.find('s', 0, 22)) list = [1, 2, 3] tuple6 = tuple(list) # 将列表强制转化为元组 print(tuple6)字符串:
str1 = ('dd\tddd') print(str) str2 = ('dd\bddd') print(str2) str3 = ("dd\nddd") print(str3) str3 = '' # 清空字符串 print(str3) str4 = ('\"s\'') print(str4) str5 = ('dd \rddd') print(str5) 输出:dddd dd ddd "s' ddd
python入门前期笔记及示例
最新推荐文章于 2022-12-02 09:10:10 发布