python小练习
Excel操作
练习1
- 新建工作簿
- 新建多个sheet页面
- 写入单元格内容
- 保存工作簿到指定文件夹
# !/usr/bin/env python3
import openpyxl
data = openpyxl.Workbook('try3.xlsx') # 新建工作簿
sheet2 = data.create_sheet('Sheet_1',0) # 添加sheet页
sheet3 = data.create_sheet('Sheet_2',1) # 添加sheet页
for i in range(1,10):
sheet2.append([i,i*2,i+6]) # 每行一个列表,for循环多行
for i in range(1, 10):
sheet3.append([i,i*2,i*3])
data.save(r'C:\Users\ASUS2021\Desktop\try3.xlsx')
data.close()
Excel截图:
练习1-1
- 加载Excel
- 查看项目的默认路径
- 读取文档内容,写入一个单元格内
import openpyxl
list = ['pin_1.sql','pin_2.sql']
excel = openpyxl.load_workbook("pin.xlsx") # 项目默认位置,打开 pin.xlsx
# import os
# print(os.path.abspath('.')) # 可查看当前项目默认路径
sheet = excel.active # 获取当前sheet页
for i in list:
filepath = str(i)
sheet.append((open(filepath,encoding='UTF-8').read(),))
excel.save("pin.xlsx")
效果截图:
练习1-2
- 获取每个sheet页
- 获取每个单元格内容
- 在文档中写入内容
#!/usr/bin/env python3
import openpyxl
wb = openpyxl.load_workbook('pin.xlsx')
for sheet in wb.sheetnames:
print(sheet) # 获取每个sheet页
ws = wb[sheet]
# 循环来读取每一个cell中的内容
for i in range(1, ws.max_row + 1):
for j in range(1, ws.max_column + 1):
# 如果cell中的内容为None,那么写到txt中的时候用空来代替
if ws.cell(i, j).value is None:
content = ''
# 如果cell中有内容,将其转换成string写到sql文档中
else:
content = str(ws.cell(i, j).value)
# print(content)
file = open(str(ws.cell(i, 1).value) + '.sql', 'w') # 将第一列内容转为sql文档标题
if(j>=1): # 将第二列内容转为sql文档内容
print(content)
file.write(content)
file.close()
效果截图:
文件读写
练习2
- 将多个文档合并为一个文档
list = ['pin_1.sql','pin_2.sql']
path = 'C:\\Users\\ASUS2021\\Desktop\\' # 文件地址,这边注意是双斜杠
with open(r'C:\Users\ASUS2021\Desktop\pin_3.sql', 'a+') as file: # 文件地址,这边用单斜杠是因为加了r
for i in list:
filepath = path+str(i) # str(i) 加不加 str() 均可 , filepath = path+i 也ok
with open(filepath, 'r') as file2:
content = file2.read()
file.write(content) # 将 pin_1.sql,pin_2.sql 中的内容写入到 pin_3.sql中
file.write('\n')
效果截图:
练习3
- 遍历文档内容
- 换行问题
with open(r'C:\Users\ASUS2021\Desktop\pin_3.sql','r') as file:
file_lines = file.readlines()
for i in file_lines: # 用for...in...把每一行的数据遍历
# print(i)
print(i, end='') # 打印变量i,不换行
效果截图:
文件夹操作
练习4
- 路径拼接
- 创建多级目录
- 创建文档
#!/usr/bin/env python3
import os
aw = ['负债信息','还款信息']
bw = ['-房贷','-车贷']
file_path=os.path.abspath(r"C:\Users\ASUS2021\Desktop\文件")
for a in aw:
file_path2 = file_path + "\\" + a
os.makedirs(file_path2) # os.makedirs创建多级目录
for b in bw:
c = "{}{}.sql".format(a,b) # 创建SQL文件
print(c)
file_name = file_path2 + "\\" + c
f = open(file_name,'w')
f.close()
效果截图:
生成随机数
练习5
- 生成随机数
- 打乱列表顺序
import random
namelist = ['a', 'b', 'c']
circlelist = []
for name in namelist:
time = random.randint(1,3) # 每个字母循环次数,该次数是2到5之间的某个数
for i in range(time):
circlelist.append(name)
random.shuffle(circlelist) # 打乱列表abc排列顺序
print(len(circlelist))
print(circlelist)
# 将该列表写入到文档中
count = 0
with open(r'C:\Users\ASUS2021\Desktop\rank.txt', 'w') as f:
for i in circlelist:
f.writelines(i)
count += 1
f.writelines('\n')
print(count)
效果截图:
练习6
- chr() ASCII对应的字符
import random
def createRandomString(len): # 生产一串随机字符串,长度为len
print ('www'.center(15,'*'))
raw = ''
range1 = range(58, 65) # between 0~9 and A~Z
range2 = range(91, 97) # between A~Z and a~z
i = 0
while i < len:
seed = random.randint(48, 122)
if ((seed in range1) or (seed in range2)):
continue
raw += chr(seed) # chr()ASCII对应的字符
i += 1
return raw
print(createRandomString(15))
效果截图:
排序算法
练习7
def quicksort(array):
if len(array) < 2:
return array
else:
pivot = array[0]
print('p',pivot)
less = [i for i in array[1:] if i <= pivot]
print('less',less)
greater = [i for i in array[1:] if i > pivot]
print('greater',greater)
print('re',quicksort(less) + [pivot] + quicksort(greater))
return quicksort(less) + [pivot] + quicksort(greater)
print(quicksort([10, 5, 2, 3]))
效果截图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本