作业一
使用字典、循环重构管理系统,实现所有功能
# 引入模块
import os
# 公共数据:记录学员信息的字典
user_list = {
"admin":{"username": "admin", "password": "123",},
}
stu_list = {}
# 1. 展示登录界面
while True:
os.system("cls") # clears
print("\t\t学生管理系统")
print("- * - * - * - * - * - * - * - * - * - * - * -")
print("\t\t1. 操作员登录")
print("\t\t2. 操作员注册")
print("\t\t3. 退出系统")
print("- * - * - * - * - * - * - * - * - * - * - * -")
# 提示用户输入选项
choice = input("请输入您的选项:")
if choice == "1":
# 2. 登录操作
username = input("请输入账号:").strip()
password = input("请输入密码:").strip()
user = {
'username': username,
'password': password
}
# 判断账号密码是否正确
if user in user_list.values():
print("登录成功")
# 登录成功,展示首页页面
while True:
# 3. 主页界面
os.system("cls")
print("\t\t学生管理系统-主页")
print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~")
print("\t\t1. 录入学员信息")
print("\t\t2. 删除学员信息")
print("\t\t3. 修改学员信息")
print("\t\t4. 查询学员信息")
print("\t\t5. 返回首页·")
print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~")
# 4. 功能流程(增加、删除、查询、退出)
choice = input("请输入您的选项:")
if choice == "1":
# 录入学员信息
id = input("请输入学号:").strip()
name = input("请输入姓名:").strip()
age = input("请输入年龄:").strip()
gender = input("请输入性别(男/女):").strip()
score = input("请输入计算机成绩:").strip()
# 创建学员字典
stu_dict = {
"id": id, "name": name, "age": age, "gender": gender, "score": score
# name, age, gender, score
}
stu_list[id] = stu_dict
# print(stu_list, "查看结果(临时代码)")
input("学员信息录入成功,按任意键返回主页")
elif choice == "2":
# 删除学员信息
a = input("请输入要删除的学员编号:")
if a in stu_list.keys():
# 展示要删除的学员信息
print("----------------------------------------")
print("学号--|--姓名--|--年龄--|--性别--|--计算机成绩--|")
print(stu_list[a].get("id"), stu_list[a].get("name"), stu_list[a].get("age"),
stu_list[a].get("gender"), stu_list[a].get("score"), sep="--|--")
print("----------------------------------------")
isDel = input("确定要删除该学员吗(Y/N)?")
if isDel == "Y":
del stu_list[a]
input("学员信息删除成功,按任意键返回主页")
else:
input("用户取消了删除操作,按任意键返回主页")
else:
input("未找到该学员,请检查编号是否正确,按任意键返回主页")
elif choice == "3":
# 修改学员信息:姓名、性别、年龄
id = input("请输入要修改的学员编号:")
if id in stu_list.keys():
# 展示要删除的学员信息
print("----------------------------------------")
print("学号--|--姓名--|--年龄--|--性别--|--计算机成绩--|")
print(stu_list[id].get("id"), stu_list[id].get("name"), stu_list[id].get("age"),
stu_list[id].get("gender"), stu_list[id].get("score"), sep="--|--")
print("----------------------------------------")
ch = input("请输入要修改的属性(1.姓名 2.性别 3.年龄):")
if ch == "1": # 修改姓名
name = input("请输入新的姓名:")
stu_list[id]["name"] = name
elif ch == "2": # 修改性别
gender = input("请输入新的性别:")
stu_list[id]["gender"] = gender
elif ch == "3": # 修改年龄
age = input("请输入新的年龄:")
stu_list[id]["age"] = age
else:
input("输入错误,按任意键返回主页")
break
input("修改完成,按任意键返回主页")
else:
input("没有查询到该编号的学员,按任意键返回主页")
elif choice == "4":
# 查询学员信息
print("\t\t学生管理系统-学员信息查看")
print("----------------------------------------")
print("学号--|--姓名--|--年龄--|--性别--|--计算机成绩--|")
for key,value in stu_list.items():
print(value['id'],value['name'],value['age'],value['gender'],value['score'],sep="\t")
print("----------------------------------------")
input("学员信息查看完成,按任意键返回主页")
elif choice == "5":
# 返回首页
input("按任意键返回首页")
break
else:
input("输入有误,按任意键重新输入!")
else:
input("账号或密码错误,按任意键返回首页")
elif choice == "2":
username = input("请输入注册账号:").strip()
if username in user_list.keys():
input("账号已存在,按任意键返回首页!")
else:
password = input("请输入注册密码:")
# 注册添加新用户
user_name1 = {}
new_user = {"username": username, "password": password, }
user_list["user_name1"] = new_user
input("新用户注册成功,按任意键返回首页")
elif choice == "3":
# 退出系统
input("按任意键退出")
exit()
else:
print("输入有误,请重新输入!")
作业二
拓张学习偏函数
什么是偏函数
偏函数是一种创建新函数的方式,它通过固定函数的一部分参数来创建一个新的函数。
在 Python 中,可以使用 functools 模块中的 partial 函数来创建偏函数。
例子
from functools import partial
# 原始函数
def add_numbers(a, b):
return a + b
# 创建偏函数
add_five = partial(add_numbers, 5)
# 调用偏函数
result = add_five(10)
print(result)
定义了一个 add_numbers 函数用于执行加法操作。然后,使用 partial 函数创建了一个偏函数 add_five ,它固定了第一个参数为 5 。最后,调用偏函数 add_five 并传入另一个参数 10 ,得到结果。
为什么使用偏函数
在 Python 中,使用偏函数可以将一个函数的部分参数固定,生成一个新的函数。这样可以简化函数的调用,提高代码的可读性和可维护性。
原因:
1. 简化函数调用:通过将常用的参数固定,可以减少在函数调用时需要传递的参数数量,使函数调用更加简洁。
2. 提高代码的可读性:使用偏函数可以更清晰地表达函数的意图,让其他开发者更容易理解代码的逻辑。
3. 代码复用:偏函数可以作为一个独立的函数对象在代码中复用,避免了重复定义相同功能的函数。
4. 默认参数设置:偏函数可以用于设置函数的默认参数,当没有提供特定参数时,将使用默认值。
5. 动态参数调整:可以根据不同的需求动态地调整偏函数的参数,实现更灵活的功能。
偏函数有哪些使用场景
偏函数的使用场景包括但不限于以下几种:
- 重复代码:当需要多次调用具有相同参数的函数时,使用偏函数可以避免重复编写相同的代码。
- 简化函数调用:当需要多次调用具有相同部分参数的函数时,偏函数可以简化参数传递过程。
- 构建复杂的控制流:偏函数可以用于构建更复杂的控制流程,例如,通过组合多个偏函数实现更复杂的逻辑。
- 默认参数设置:偏函数可以用于设置函数的默认参数,当没有提供特定参数时,将使用默认值。
- 动态参数调整:可以根据不同的需求动态地调整偏函数的参数,实现更灵活的功能。