python第三次作业

代码:

import os
def traverse(path):
    # 先判断路径是否存在
    if not os.path.exists(path):
        print("路径不存在!")
        return
    for item in os.listdir(path):
        item_path = os.path.join(path, item)
        if os.path.isfile(item_path):
            print(f"文件: {item_path}")
        elif os.path.isdir(item_path):
            print(f"文件夹: {item_path}")
            traverse(item_path)  # 递归遍历子文件夹
# 调用示例
traverse("./")


import hashlib
def encrypt(pwd):
    # 使用MD5加密,添加盐值增强安全性
    salt = "my_salt"
    return hashlib.md5((pwd + salt).encode()).hexdigest()

def register():
    user = input("用户名: ")
    pwd = input("密码: ")
    # 检查用户名是否已存在
    try:
        with open("user.txt", "r") as f:
            for line in f:
                u, _ = line.strip().split(":")
                if u == user:
                    print("用户名已存在!")
                    return
    except FileNotFoundError:
        pass  # 文件不存在,直接注册
    # 写入文件
    with open("user.txt", "a") as f:
        f.write(f"{user}:{encrypt(pwd)}\n")
    print("注册成功")

def login():
    user = input("用户名: ")
    pwd = input("密码: ")
    try:
        with open("user.txt", "r") as f:
            for line in f:
                u, p = line.strip().split(":")
                if u == user and p == encrypt(pwd):
                    print("登录成功")
                    return
        print("用户名或密码错误")
    except FileNotFoundError:
        print("用户不存在,请先注册")
# 调用示例
while True:
    choice = input("1.注册 2.登录 3.退出: ")
    if choice == "1":
        register()
    elif choice == "2":
        login()
    elif choice == "3":
        break
    else:
        print("输入错误,请重新选择!")


class Student:
    def __init__(self, name, score, age=0, gender="未知"):
        self.name = name
        self.score = score
        self.age = age
        self.gender = gender

    def __repr__(self):
        return f"姓名:{self.name}, 年龄:{self.age}, 性别:{self.gender}, 成绩:{self.score}"

def student_manager():
    students = []
    while True:
        name = input("输入学生姓名(输入q退出): ")
        if name == "q":
            break
        try:
            score = float(input("输入成绩: "))
            age = int(input("输入年龄: "))
            gender = input("输入性别: ")
            students.append(Student(name, score, age, gender))
        except ValueError:
            print("输入格式错误,请重新输入!")
    # 按成绩从高到低排序
    students.sort(key=lambda s: s.score, reverse=True)
    print("\n按成绩排序结果:")
    for s in students:
        print(s)
    # 保存到文件
    with open("students.txt", "w", encoding="utf-8") as f:
        for s in students:
            f.write(f"{s.name},{s.score},{s.age},{s.gender}\n")
    print("信息已保存到students.txt")
# 调用示例
student_manager()

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值