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]))

效果截图:

posted @   中了毒蛇粉的猫  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示