第三次Python练习题

1.使用os和os.path以及函数的递归完成:给出一个路径,遍历当前路径所有的文件及文件夹打印输出所有的文件(遇到文件输出路径,遇到文件夹继续进文件夹)

python 复制代码
import os
import os.path
def list_all_file(path):
    for name in os.listdir(path):  #逐个遍历这个名称列表,每次循环拿到一个文件 / 文件夹的名称 name。
        file_path = os.path.join(path,name)  #把当前路径 path 和名称 name 拼接成完整的文件 / 文件夹路径。
        if os.path.isfile(file_path):#判断 file_path 是否是一个文件。
            print(file_path)
        elif os.path.isdir(file_path): #判断 file_path 是否是一个文件夹。
            list_all_file(file_path)
if __name__ == "__main__":
    list_all_file("D:\\Python\\code\\05.Python-io")

2.使用加密模块及IO模拟登录功能,要求使用文件模拟数据库存储用户名和密码。

python 复制代码
import hmac
datebase = {}
def encryption_admin(str):
    salt = "%%$$&&".encode("utf-8")
    return hmac.new(str.encode("utf-8"),salt,"md5").hexdigest()

datebase["username"] = encryption_admin("zhangsan")
datebase["password"] = encryption_admin("111")

username = input("请输入用户名:")
password = input("请输入密码:")
if (encryption_admin(username) == datebase["username"]) and (encryption_admin(password) == datebase["password"]):
    print("login success")
else:
    print("login failure")

3.使用面向对象编程完成学生信息录入功能,数据存储在本地文件txt中并读取学生信息并按照成绩进行排序,学生其他属性自行规划

python 复制代码
class Student:
    """学生类"""
    def __init__(self, name, age, score):
        self.name = name
        self.age = int(age)
        self.score = float(score)

    def __str__(self):
        """打印信息"""
        return f"姓名:{self.name}, 年龄:{self.age}, 成绩:{self.score}"

    def __lt__(self, other):
        return self.score < other.score

    def __eq__(self, other):
        return self.name == other.name and self.age == other.age and self.score == other.score

    def __hash__(self):
        return hash((self.name, self.age, self.score))


def save_student(name, age, score):
    """保存学生信息"""
    try:
        with open("D:\\Python\\code\\05.Python-io\\student.txt", "a", encoding="utf-8") as f:
            f.write(f"{name},{age},{score}\n")
            print("保存成功")
    except Exception as e:
        print("异常信息:", e)


def read_student():
    """读取学生信息"""
    students = set()
    try:
        with open("D:\\Python\\code\\05.Python-io\\student.txt", "r", encoding="utf-8") as f:
            for line in f:
                name, age, score = line.strip().split(",")
                students.add(Student(name, age, score))
    except Exception as e:
        print("异常信息:", e)
    return list(students)  # 将集合转换为列表


def input_student():
    """录入学生信息"""
    students = []
    while True:
        name = input("请输入学生姓名(输入q结束):")
        if name == "q":
            break
        age = input("请输入学生年龄:")
        score = input("请输入学生成绩:")
        student = Student(name, age, score)
        students.append(student)
        save_student(name, age, score)
    return students


def sort_student(students):
    """排序"""
    students.sort(reverse=True)
    return students



if __name__ == "__main__":
    # 录入学生信息
    students = input_student()
    # 保存学生信息
    for student in students:
        save_student(student.name, student.age, student.score)
    
    # 读取学生信息
    students = read_student()
    
    # 排序学生信息
    sorted_students = sort_student(students)
    
    # 打印排序后的学生信息
    print("排序后的学生信息:")
    for s in sorted_students:
        print(s)
相关推荐
Chester_19992 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
DeepVisionary2 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
阡之尘埃3 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰3 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
EXI-小洲3 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
cvcode_study3 小时前
Ollama+ComfyUI 多模态
大数据·人工智能·python
会周易的程序员4 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导4 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan4 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
m0_695251494 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt