1.使用os和os.path以及函数的递归完成: 给出一个路径,遍历当前路径所有的文件及文件夹 打印输出所有的文件(遇到文件输出路径,遇到文件夹继续进文件夹)
python
import os
def traverse_files(path):
"""
递归遍历指定路径下的所有文件并打印文件路径
:param path: 要遍历的根路径
"""
#检查路径是否存在
if not os.path.exists(path):
print(f"路径 {path} 不存在!")
return
#遍历当前路径下的所有文件/文件夹
for item in os.listdir(path):
#拼凑完整路径
full_path = os.path.join(path,item)
#判断是否是文件
if os.path.isfile(full_path):
print(f"文件:{full_path}")
#判断是否是文件,若是则递归调用
elif os.path.isdir(full_path):
traverse_files(full_path)
#测试调用(替换为你遍历的路径)
if __name__ == "__main__":
target_path = "./test_folder"
traverse_files(target_path)

2.使用加密模块及IO模拟登录功能,要求使用文件模拟数据库存储用户名和密码。
python
import hashlib
# 加密函数:将密码转为md5哈希值(不可逆)
def encrypt_password(password):
"""
对密码进行md5加密
:param password: 原始密码
:return: 加密后的字符串
"""
md5 = hashlib.md5()
md5.update(password.encode("utf-8"))
return md5.hexdigest()
# 注册功能(新增用户)
def register(username, password):
"""
注册用户,将用户名和加密后的密码存入文件
:param username: 用户名
:param password: 原始密码
"""
# 检查用户名是否已存在
if check_user_exists(username):
print(f"用户名 {username} 已存在!")
return
# 写入文件(格式:用户名:加密密码)
with open("user_db.txt", "a", encoding="utf-8") as f:
f.write(f"{username}:{encrypt_password(password)}\n")
print(f"用户 {username} 注册成功!")
# 检查用户是否存在
def check_user_exists(username):
"""
检查用户名是否已存在
:param username: 用户名
:return: 存在返回True,否则False
"""
try:
with open("user_db.txt", "r", encoding="utf-8") as f:
for line in f:
if line.strip().split(":")[0] == username:
return True
return False
except FileNotFoundError:
# 文件不存在则直接返回False(首次注册)
return False
# 登录功能
def login(username, password):
"""
登录验证,对比用户名和加密后的密码
:param username: 用户名
:param password: 原始密码
:return: 登录成功返回True,否则False
"""
if not check_user_exists(username):
print(f"用户名 {username} 不存在!")
return False
# 读取文件验证密码
with open("user_db.txt", "r", encoding="utf-8") as f:
for line in f:
user, pwd = line.strip().split(":")
if user == username and pwd == encrypt_password(password):
print(f"用户 {username} 登录成功!")
return True
print("密码错误!")
return False
# 测试调用
if __name__ == "__main__":
# 示例:注册用户
register("zhangsan", "123456")
# 示例:登录验证
login("zhangsan", "123456") # 正确密码
login("zhangsan", "654321") # 错误密码

3.使用面向对象编程完成学生信息录入功能,数据存储在本地文件txt中,并读取学生信息并按照成绩进行排序,学生其他属性自行规划
python
class Student:
"""学生类:封装学生属性和行为"""
def __init__(self, id, name, age, gender, score):
self.id = id # 学号(唯一标识)
self.name = name # 姓名
self.age = age # 年龄
self.gender = gender # 性别
self.score = score # 成绩
def to_string(self):
"""将学生信息转为字符串(用于写入文件)"""
return f"{self.id},{self.name},{self.age},{self.gender},{self.score}"
@staticmethod
def from_string(line):
"""从字符串解析为Student对象(用于读取文件)"""
id, name, age, gender, score = line.strip().split(",")
return Student(id, name, int(age), gender, float(score))
class StudentManager:
"""学生信息管理类:处理录入、存储、读取、排序"""
def __init__(self, file_path="students.txt"):
self.file_path = file_path # 存储学生信息的文件路径
def add_student(self, student):
"""录入学生信息并写入文件"""
# 检查学号是否重复
if self.check_id_exists(student.id):
print(f"学号 {student.id} 已存在,录入失败!")
return
with open(self.file_path, "a", encoding="utf-8") as f:
f.write(student.to_string() + "\n")
print(f"学生 {student.name} 信息录入成功!")
def check_id_exists(self, student_id):
"""检查学号是否重复"""
try:
with open(self.file_path, "r", encoding="utf-8") as f:
for line in f:
if line.strip().split(",")[0] == student_id:
return True
return False
except FileNotFoundError:
return False
def get_all_students(self):
"""读取所有学生信息,返回Student对象列表"""
students = []
try:
with open(self.file_path, "r", encoding="utf-8") as f:
for line in f:
if line.strip(): # 跳过空行
students.append(Student.from_string(line))
except FileNotFoundError:
print("学生信息文件不存在,暂无学生数据!")
return students
def sort_students_by_score(self, reverse=True):
"""按成绩排序(默认降序,reverse=False为升序)"""
students = self.get_all_students()
if not students:
return []
# 按score属性排序
students.sort(key=lambda s: s.score, reverse=reverse)
return students
def print_sorted_students(self):
"""打印排序后的学生信息"""
sorted_students = self.sort_students_by_score()
if not sorted_students:
print("暂无学生信息可展示!")
return
print("\n===== 学生信息(按成绩降序)=====")
print("学号\t姓名\t年龄\t性别\t成绩")
print("-" * 40)
for s in sorted_students:
print(f"{s.id}\t{s.name}\t{s.age}\t{s.gender}\t{s.score}")
# 测试调用
if __name__ == "__main__":
# 创建管理对象
manager = StudentManager()
# 录入学生信息
manager.add_student(Student("001", "张三", 18, "男", 92.5))
manager.add_student(Student("002", "李四", 19, "女", 88.0))
manager.add_student(Student("003", "王五", 18, "男", 95.0))
# 打印排序后的学生信息
manager.print_sorted_students()
