day 10

作业解析
import random
import openpyxl
# 采取XLSX文件,方便对列进行操作
# 创建文件
wb = openpyxl.Workbook()
# 新建工作表
wb.create_sheet('学生成绩')
# 添加列
cols = ['姓名', '语文', '数学', '英语']
for i in range(len(cols)):
    wb.['学生成绩'].cell(1, i+1).value = cols[i]  # wb.['学生成绩']:对应工作表
# 写入数据
for i in range(1,101):
    wb['学生成绩'].cell(i + 1, 1).value = 'python{:0>3}'.format(i)
# 生成成绩写入表格
for i in range(2, 102):
    for j in range(2, 5):
        wb['学生成绩'].cell(i, j).value = random.randint(0, 101)
# 保存文件
wb.save('学生成绩.xlsx')   # project如果没有生成文件,刷新即可

# 加载源文件
wb = openpyxl.load_workbook('学生成绩.xlsx')
# 找工作表
# 对行号进行遍历
list1 = []  # 语文成绩
list2 = []  # 数学成绩
list3 = []  # 英语成绩
for i in range(2,102):
    list1.append(wb['学生成绩'].cell(i,2).value)
    list2.append(wb['学生成绩'].cell(i,3).value)
    list3.append(wb['学生成绩'].cell(i,4).value)
# 列表表达式
a=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,2).value == max(list1)]  # 语文成绩最高分对应学号
b=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,2).value == min(list1)]  # 语文成绩最低分对应学号
c=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,3).value == max(list2)]
d=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,3).value == min(list2)]
e=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,4).value == max(list3)]
f=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,4).value == min(list3)]
print(f'语文成绩最高分对应学生:{a},语文成绩最低分对应学生:{b}')
print(f'数学语文成绩最高分对应学生:{c},数学成绩最低分对应学生:{d}')
print(f'英语成绩最高分对应学生:{e},英语成绩最低分对应学生:{f}')

# 添加总分
wb['学生成绩'].cell(1,5).value = '总分'
max_=0
min_=300
# 计算总分
for i in range(2,102):
    wb['学生成绩'].cell(i,5).value=\
        wb['学生成绩'].cell(i,2).value+wb['学生成绩'].cell(i,3).value+wb['学生成绩'].cell(i,4).value
    if wb['学生成绩'].cell(i,5).value > max_:
        max_=wb['学生成绩'].cell(i,5).value
    if wb['学生成绩'].cell(i,5).value <min_:
        min_=wb['学生成绩'].cell(i,5).value
# 寻找排名第一和倒数第一的学生
first_stu = []
last_stu = []
for i in range(2,102):
    if wb['学生成绩'].cell(i,5).value ==max_:
        first_stu.append(wb['学生成绩'].cell(i,1).value)
    if wb['学生成绩'].cell(i,5).value == min_:
        last_stu.append(wb['学生成绩'].cell(i, 1).value)
print(f'排名第一的同学是{first_stu},'
      f'排名最后的同学是{last_stu}')
# 保存关闭
wb.save('学生成绩.xlsx')
xls文件读写模块

xlwt:xls文件写操作

xrld:xls文件读操作

openpyxl和xlwt\xlrd对比:

​ 1.openpyxl行列号从1开始;xlwt、xlrd行列号从0开始

​ 2.两者都可以对工作表进行操作

​ 3.两者都可以对单元格定位的形式进行单元格操作

​ 4.xlwt写操作使用write()写

xls文件写操作
import xlwt
import random
# 创建文件
wb = xlwt.Workbook()
# add_sheet:创建工作表
sheet1 = wb.add_sheet('一年级一班成绩')
sheet2 = wb.add_sheet('一年级二班成绩')
sheet3 = wb.add_sheet('一年级三班成绩')

# 写入数据
names =['张飞','刘备','关羽','貂蝉','曹操']
for i in range(len(names)):
    sheet1.write(i, 0, names[i])
    for j in range(1,4):
        # 工作表.write(row,col,content)
        sheet1.write(i,j,random.randint(0,100))
# 保存关闭
wb.save('一年级成绩表.xls')
xls文件读操作
import xlrd
# 打开文件
wb = xlrd.open_workbook('一年级成绩表.xls')
# 选择工作表
# sheet_names() --->查看存在的所有工作表
# sheet_by_index()
# sheet_by_names()
ws = wb.sheet_by_index(0)
print(ws.cell(0,0).value)
ws1 = wb.sheet_by_name('一年级一班成绩')
print(ws1.cell(0,0),value)

# 获取行列数
# nrows:获取最大行数
# ncols:获取最大列数
爬虫相关

爬虫:网络数据采集,按照程序员的想法,有程序员自定义规则编写程序,批量的爬取数据(图片,音频,视频,数据等)

爬虫的流程:

​ 1.解析HTML页面

​ 2.根据前端的语法或者正则表达式提取数据。

​ 3.保存数据

爬虫的方法:requestsurllibseleniumplaywariter

requests:通过网址向服务器发送请求,等待服务器的响应结果。

requests的使用
import requests
URL = '目标网址'  # 通常将目标网址赋予一个变量,不然网址太长
# 向网站发送请求,获取目标服务器的响应结果
response = requests.get(url = URL)  # 响应结果
# status-code:状态码 ---> 判断服务器和网页状态
# 200:通信正常
# 403: 拒绝了客户端的请求
# 404:网页丢失
# 500:服务器崩溃

# 如果网页发生乱码,只需要根据页面指定编码方式解码即可
# requests 默认使用ISO-8859-1的编码(ASCII)
# utf-8 (万国码)、gbk(国标码)
# 搜索'charset'查找页面使用编码方式;如果没有找到,使用 response.encoding = None

# text:页面源代码(字符串类型)
response.text
# content:页面源代码(二进制形式) 适用音频,视频,图片等
response.content
requests图片下载
import requests
URL ='https://video.pearvideo.com/mp4/adshort/20220614/cont-1765337-15895934_adpkg-ad_hd.mp4' # 目标文件
response = requests.get(url=URL)
if response.status_code == 200:
    print(response.content)
    # 将图片写入本地文件
    # photo=open('1.jpg','wb')
    # photo = open('1.mp4', 'wb')
    # photo.write(response.content)
    # photo.close()
    video=open('1.mp4','wb')
    video.write(response.content)
    video.close()
else:
    print(f'状态码:{response.status_code}') 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值