Python学习记录25(基础知识终结篇)

接下来是一个用面向对象思路做的案例:

#目标:完成教务管理系统的开发,教务管理系统可以管理在校学生的成绩信息,通过控制台菜单与用户交互。

#要求 #

1.采用面向对象编程思想完成如下需求

2.添加学生成绩,根据输入的学生姓名、语文数学英语成绩,记录在系统中

3.修改学生成绩,根据输入的学生姓名,修改对应学生成绩

4.删除学生成绩,根据输入的学生姓名,删除对应学生成绩

5.查询指定学生成绩,根据输入的学生姓名查找对应学生的成绩并输出

6.展示全部学生成绩

案例:教务管理系统

学生类

class Student: def init(self, name, Chinese, Math, English): # 初始化学生对象,设置姓名和三科成绩 self.name = name self.Chinese: float = Chinese # 类型提示,建议传入数字 self.Math: float = Math self.English: float = English

复制代码
# 格式化输出学生信息,包括总分
def __str__(self):
    return (f'姓名:{self.name} | 语文:{self.Chinese} | 数学:{self.Math} | '
            f'英语:{self.English} | 总分:{self.Chinese + self.Math + self.English}')
修改学生成绩,参数为 None 时表示不修改该科
def update_score(self, Chinese=None, Math=None, English=None):
if Chinese is not None:
self.Chinese = Chinese
if Math is not None:
self.Math = Math
if English is not None:
self.English = English

教务管理系统类

class EduManagement: system_version = '1.0' system_name = '教务管理系统'

复制代码
def __init__(self):
    # 用列表存储所有学生对象
    self.student_list = []
添加学生成绩
def add_student(self):
name = input('请输入学生姓名:')
# 检查姓名是否已存在,防止重复添加
for s in self.student_list:
    if s.name == name:
        print('该学生已经存在,添加失败~')
        return

# 输入三科成绩
Chinese = int(input('请输入学生语文成绩:'))
Math = int(input('请输入学生数学成绩:'))
English = int(input('请输入学生英语成绩:'))

# 校验成绩范围
if 0 <= Chinese <= 100 and 0 <= Math <= 100 and 0 <= English <= 100:
    stu = Student(name, Chinese, Math, English)
    self.student_list.append(stu)
    print('学生信息添加成功~')
else:
    print('各科成绩必须在0-100之间!')
修改学生成绩
def update_student(self):
name = input('请输入学生姓名:')
# 根据姓名查找学生
for s in self.student_list:
    if s.name == name:
        print(f'当前成绩:{s}')
        Chinese = int(input('请输入修改后的学生语文成绩:'))
        Math = int(input('请输入修改后的学生数学成绩:'))
        English = int(input('请输入修改后的学生英语成绩:'))

        # 校验成绩范围
        if 0 <= Chinese <= 100 and 0 <= Math <= 100 and 0 <= English <= 100:
            s.update_score(Chinese, Math, English)
            print('成绩修改成功~')
            print(f'修改后的成绩:{s}')
            return
        else:
            print('各科成绩必须在0-100之间!')
            return   # 成绩不合法则直接结束,不再执行后面的"未找到"提示

print('未找到该学生,执行失败!')
删除学生成绩
def delete_student(self):
name = input('请输入要删除的学生姓名:')
# 查找并删除
for s in self.student_list:
    if s.name == name:
        self.student_list.remove(s)
        print('学生信息删除成功!')
        return

print('未找到该学生,删除失败!')
查询指定学生成绩
def query_student(self):
name = input('请输入要查询的学生姓名:')
for s in self.student_list:
    if s.name == name:
        print(f'学生信息:{s}')
        return

print('未找到该学生!')
展示全部学生成绩
def list_student(self):
if not self.student_list:
print('暂无学生信息')
else:
for s in self.student_list:
print(s)
运行系统主菜单
def run(self):
print(f'欢迎使用教学管理系统 V{EduManagement.system_version}')
while True:
    print()
    print('# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #')
    print('#   1.添加学生 2.修改学生 3.删除学生 4.查询指定学生 5.查询所有学生 6.退出系统    #')
    print('# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #')
    print()

    # 修正:这里必须用 input() 获取输入,否则 choice 永远是固定字符串,导致无限循环
    choice = input('请选择要执行的操作,输入1-6:')

    match choice:
        case '1':
            self.add_student()
        case '2':
            self.update_student()
        case '3':
            self.delete_student()
        case '4':
            self.query_student()
        case '5':
            self.list_student()
        case '6':
            print('Bye~')
            break
        case _:
            print('输入错误!请选择1-6之间的菜单功能!')

测试

if name == 'main':

edu_management = EduManagement() edu_management.run()

这里注意缩进

以上这些就是关于 Python 的所有基础知识了,终于学完了,接下来就进入到 Python 和 AI 结合的学习了。

相关推荐
打工仔折腾 AI9 小时前
System Prompt 替代 Few-shot:用规则约束大模型输出的省钱实践
java·人工智能·python·spring·langchain·prompt·ai agent 实战
打工仔折腾 AI9 小时前
从零写一个CAD 05:以鼠标为中心的滚轮缩放,招法能复用但顺序不能反
开发语言·后端·python·性能优化·计算机外设·swift·ai agent 实战
for_ever_love__9 小时前
控制流——if、for、while 与可迭代对象
python·大模型开发·循环·控制流
for_ever_love__9 小时前
PyTorch 张量与 autograd——自动求导怎么工作
pytorch·python·深度学习·自动求导
小小张说故事9 小时前
Python 里 `is` 和 `==` 到底差在哪?5 个让你怀疑人生的案例 + 对照表
python
李日华大战鸡红10 小时前
滑膜观测器(学习记录)
stm32·单片机·学习·matlab·机器人
XLYcmy10 小时前
PDF 论文处理器 — 改进方向与建议文档
python·pdf·llm·agent·dify·rag·harness
青柠之夏cc10 小时前
前端拖拽功能原生实现,不引入拖拽库完成业务
开发语言·前端·python
曾晓森10 小时前
OpenAI 兼容 API 接入山猫云:先核对分组和价格,再发最小请求
网络·python
OKkankan10 小时前
Python 高阶语法(一):高阶函数、闭包、lambda 与 functools——从底层真正理解装饰器
开发语言·python