1.使用os和os.path以及函数的递归完成:
给出一个路径,遍历当前路径所有的文件及文件夹
打印输出所有的文件(遇到文件输出路径,遇到文件夹继续进文件夹)
代码如下:
python
import os
def f(p):
if os.path.isfile(p):
print(p)
elif os.path.isdir(p):
for i in os.listdir(p):
f(os.path.join(p, i))
f('.')
运行结果如下:

2.使用加密模块及IO模拟登录功能,要求使用文件模拟数据库存储用户名和密码。
代码如下:
python
import os
import hmac
DB_FILE = 'users.db'
def encrypt(s):
salt = "*******1!!!!"
return hmac.new(s.encode(), salt.encode(), "md5").hexdigest()
def load():
d = {}
if os.path.exists(DB_FILE):
with open(DB_FILE, 'r') as f:
for l in f:
l = l.strip()
if l:
u, p = l.split(':')
d[u] = p
return d
def save(d):
with open(DB_FILE, 'w') as f:
for u, p in d.items():
f.write(f'{u}:{p}\n')
def reg():
d = load()
u = input('用户名: ')
if u in d:
print('用户已存在')
return
p = input('密码: ')
p2 = input('确认密码: ')
if p != p2:
print('密码不一致')
return
d[u] = encrypt(p)
save(d)
print('注册成功')
def login():
d = load()
u = input('用户名: ')
if u not in d:
print('用户不存在')
return
p = input('密码: ')
if d[u] == encrypt(p):
print('登录成功')
else:
print('密码错误')
while True:
print('\n1.注册 2.登录 3.退出')
c = input('选择: ')
if c == '1':
reg()
elif c == '2':
login()
elif c == '3':
break
else:
print('无效选择')
运行结果如下:

3.使用面向对象编程完成学生信息录入功能,数据存储在本地文件txt中,并读取学生信息并按照成绩绩进行排序,学生其他属性自行规划
代码如下:
python
class Student:
def __init__(self, name, number, chinese, math, english):
self.name = name
self.number = number
self.chinese = chinese
self.math = math
self.english = english
def total(self):
return self.chinese + self.math + self.english
students = []
while True:
print("1.录入 2.查看 3.退出")
c = input("选择:")
if c == "1":
name = input("姓名:")
number = input("学号:")
chinese = int(input("语文:"))
math = int(input("数学:"))
english = int(input("英语:"))
s = Student(name, number, chinese, math, english)
students.append(s)
f = open("students.txt", "a", encoding="utf-8")
f.write(f"{name},{number},{chinese},{math},{english}\n")
f.close()
print("保存成功")
elif c == "2":
f = open("students.txt", "r", encoding="utf-8")
students = []
for line in f:
if line.strip():
p = line.strip().split(",")
s = Student(p[0], p[1], int(p[2]), int(p[3]), int(p[4]))
students.append(s)
f.close()
students.sort(key=lambda x: x.total(), reverse=True)
print("姓名\t学号\t\t语文\t数学\t英语\t总分")
for s in students:
print(f"{s.name}\t{s.number}\t{s.chinese}\t{s.math}\t{s.english}\t{s.total()}")
elif c == "3":
break
运行结果如下:
