python小题库(三)
大家好呀,今天继续更新python小题库。
题11:实现学生成绩排序
# 问题:实现学生成绩排序
# 如学生的成绩是字典形式
students = [{"sno": 101, "sname": "小张", "sgrade": 88},{"sno": 102, "sname": "小王", "sgrade": 99},{"sno": 103, "sname": "小李", "sgrade": 77},{"sno": 104, "sname": "小赵", "sgrade": 66},
]students_sorted = sorted(students, key=lambda x : x["sgrade"])
students_sorted1 = sorted(students, key=lambda x : x["sgrade"], reverse=True)
students_sorted2 = sorted(students, key=lambda x : x["sgrade"], reverse=False)
print(students_sorted, '\n', students_sorted1, '\n', students_sorted2)# 思考,sorted对字典排序的逻辑是什么,lambda函数是什么用途
题12:还是借鉴成绩排序,读取txt文件内容进行排序输出
# 题目:还是借鉴成绩排序,读取txt文件内容进行排序输出
# 输入文件:# 三列:学号,姓名,成绩# 列之间用逗号分割,比如“101,小张,88”# 行之间用/n换行分割
# 处理:# 读取文件,按成绩倒序排序
# 输出:# 排序后的三列数据
def read_file():grade_li = []with open("./students_grade_input.txt") as f: # 思考with open的用法for line in f:line = line[:-1] # 这一行是干啥的grade_li.append(line.split(",")) # splite函数的作用return grade_lidef grade_sorted(datas):return sorted(datas, key=lambda x: int(x[2]),reverse=True)def write_file(datas):with open("./student_grade_output.txt", "w") as f:for data in datas:f.write(",".join(data)+'\n')# 读取文件
datas = read_file()
# 数据排序
datas = grade_sorted(datas)
# 写出文件
write_file(datas)
题13:统计学生成绩高分低分平均分
# 题目,统计学生成绩高分低分平均分
# 输入文件:# 三列:学号,姓名,成绩# 列之间用逗号分割,比如“101,小张,88”# 行之间用/n换行分割
# 输出:最高分,最低分,平均分
def compute_score():grade_li = []with open("./students_grade_input.txt") as f: # 思考with open的用法for line in f:line = line[:-1]fields = line.split(",")grade_li.append(int(fields[-1])) max_score = max(grade_li)min_score = min(grade_li)avg_score = round(sum(grade_li)/len(grade_li), 2) # round函数作用return max_score, min_score, avg_score
max_score, min_score, avg_score = compute_score()
print(f"max_score={max_score}, min_score={min_score}, avg_score={avg_score}")
题14:统计英文文章中出现最多的单词
# 题目:统计英文文章中出现最多的单词
word_count = {}
with open("./paper.txt") as f:for line in f:line = line[:-1]words = line.split()for word in words:if word not in word_count:word_count[word] = 0word_count[word] += 1print(sorted(word_count.items(),key = lambda x: x[1],reverse=True)[:10] # [:10]什么作用
)
题15:统计目录下的文件大小
# 题目:统计目录下的文件大小
import os
# 统计单个文件
print(os.path.getsize("./Augmentation for small object detection.pdf"))
# 统计所有文件
sum_size = 0
for file in os.listdir("."):if os.path.isfile(file):sum_size += os.path.getsize(file)
print("all size of dir:", sum_size/1000)# 扩展,上面提到了打开文件,这里扩展一些文件路径的获取方法
"""
print(“获取当前文件路径——” + os.path.realpath(file)) # 获取当前文件路径parent = os.path.dirname(os.path.realpath(file))
print(“获取其父目录——” + parent) # 从当前文件路径中获取目录garder = os.path.dirname(parent)
print(“获取父目录的父目录——” + garder)
print(“获取文件名” + os.path.basename(os.path.realpath(file))) # 获取文件名
当前文件的路径
pwd = os.getcwd()
print(“当前运行文件路径” + pwd)当前文件的父路径
father_path = os.path.abspath(os.path.dirname(pwd) + os.path.sep + “.”)
print(“运行文件父路径” + father_path)当前文件的前两级目录
grader_father = os.path.abspath(os.path.dirname(pwd) + os.path.sep + “…”)
print(“运行文件父路径的父路径” + grader_father)
"""
喜欢的请多点赞收藏哦,如有不懂的也可以评论区问,未经允许不得转载,谢谢