第三次python作业

第一题

1.使用os和os.path以及函数的递归完成:

给出一个路径,遍历当前路径所有的文件及文件夹

打印输出所有的文件(遇到文件输出路径,遇到文件夹继续进文件夹)

代码

python 复制代码
import os


def test1(path):
    """递归遍历路径,打印所有文件和文件夹"""
    items = os.listdir(path)

    for item in items:
        full_path = os.path.join(path, item)

        if os.path.isfile(full_path):
            print(f"文件: {full_path}")

        elif os.path.isdir(full_path):
            print(f"文件夹: {full_path}")
            test1(full_path)  # 递归进入子文件夹

    print()  # 每个目录遍历完后空一行

print("请输入要遍历的路径:")
path = input("路径: ")
test1(path)

运行

第二题

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

代码

python 复制代码
import hashlib

def hash_pwd(pwd):
    return hashlib.sha256(pwd.encode()).hexdigest()

def register(name, pwd):
    open("users.txt", "a").write(f"{name},{hash_pwd(pwd)}\n")

def login(name, pwd):
    for line in open("users.txt"):
        n, p = line.strip().split(",")
        if n == name and p == hash_pwd(pwd):
            return True
    return False

while True:
    c = input("1注册 2登录 3退出:")
    if c == "1":
        register(input("用户名:"), input("密码:"))
    elif c == "2":
        print("成功" if login(input("用户名:"), input("密码:")) else "失败")
    else:
        break

运行

第三题

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

代码

python 复制代码
class Student(object):
    def __init__(self, name, age,score):
        self.name = name
        self.age = age
        self.score =score

class StudentManager:
    def __init__(self):
        self.students = []
        self.load()

    def add(self,name,age,score):
        self.students.append(Student(name,age,score))
        self.save()

    def save(self):
        with open("students.txt","w") as f:
            for s in self.students:
                f.write(f"{s.name},{s.age},{s.score}\n")

    def show(self):
        for s in self.students:
            print(f"{s.name},{s.age},{s.score}")

    def sort(self):
        for s in sorted(self.students, key=lambda x: x.score, reverse=True):

test3 = StudentManager()
while True:
    c = input("1添加 2显示 3排序 4退出:")
    if c == "1":
        test3.add(input("姓名:"), input("年龄:"), input("成绩:"))
    elif c == "2":
        test3.show()
    elif c == "3":
        test3.sort()
    else:
        break

运行

相关推荐
唐老板22 分钟前
uuidv7 来了:为什么别再拿 uuidv4 当主键了
数据库
锋行天下7 小时前
langgraph 后端发自定义数据,前端接收方法概括
人工智能·python
benchmark_cc9 小时前
用 QuantDash 读取单只股票五档盘口:抽样、缺失值检查与复现记录
python·数据分析·pandas·量化交易·股票数据·quantdash
曲径海盗10 小时前
【Python 学习第 55 天】列表基础
python·学习笔记·编程入门
专注仿真10 小时前
知识问答模型用到的算法集详解及代码实例
python·算法·代码·大模型训练·控制算法
jyOverQ10 小时前
我写了一个 CSDN Markdown 图片助手:告别本地图片逐张上传
python·工具·csdn
lzx_00211 小时前
Linux 进程(三) 从进程状态到僵尸进程、孤儿进程
linux·服务器
SelectDB13 小时前
让变更流出 Doris:Apache Doris 5.0 基于增量计算的 CDC 技术解析
数据库
刘马想放假13 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
这个DBA有点耶14 小时前
MCP隔离层+行级语义审计+输出校验:AI访问数据库的安全边界拆解
数据库·人工智能·ai编程