鱼C论坛

 找回密码
 立即注册
查看: 1969|回复: 6

[已解决]代码求解释!

[复制链接]
发表于 2020-10-9 11:36:05 | 显示全部楼层 |阅读模式
20鱼币
def panel():
    print(f'''{'=' * 20}
欢迎使用 学生管理系统 v3.0
    1.添加学生信息
    2.修改学生信息
    3.删除学生信息
    4.查看学生信息
    5.查看所有学生
    0.退出管理系统
{"=" * 20}''')

#指令逻辑
def code():
    panel()
    #所有学生信息存放(增、删、改都会改变的数据)
    students_list = [{"name":'刘翠花', 'gender':'男', 'age':'18', 'score':'100'},{"name":'王梦洋','gender':'男','age':'18','score':'10'},]
    #单个学生信息(用于添加修改)
    while True:
        student_dict = {}
        command = input("请输入指令:")
        #判断指令为空
        if len(command) == 0 or command.isspace():
            print("指令不能为空或空格,",end='')
        #退出程序功能
        elif command == '0':
            print('程序结束!!!')
            break
        #添加学生功能
        elif command == '1':
            add_student(students_list, student_dict)
        #修改学生功能
        elif command == '2':
            modify_student(students_list, student_dict)
        #删除学生功能
        elif command == '3':
            del_student(students_list, student_dict)
        #查询学生功能
        elif command == '4':
            query_student(students_list, student_dict)
        #查询所有学生信息功能
        elif command == '5':
            data_student(students_list, student_dict)
        #错误指令逻辑
        else:
            print("指令错误,",end='')

def add_student(students_list, student_dict):
    student_name = []
    for i in students_list:
        student_name.append(i['name'])
    name = input("请输入学生姓名:")
    if name in student_name:
        print('您要添加的学生信息已存在!')
    else:
        gender, age, score = input("请输入学生性别:"), input("请输入学生年龄:"), input("请输入学生成绩:")
        student_dict["name"], student_dict["gender"], student_dict["age"],student_dict['score'] = name, gender, age, score
        students_list.append(student_dict)
        print('学生添加完成,', end='')

#修改逻辑
def modify_student(students_list, student_dict):
    student_name = []
    for i in students_list:
        student_name.append(i['name'])
    name = input("请输入学生姓名:")
    if name in student_name:
        gender, age, score = input("请输入学生性别:"), input("请输入学生年龄:"), input("请输入学生成绩:")
        i["name"], i["gender"], i["age"], i['score'] = name, gender, age, score
        print('学生修改完成,', end='')
    else:
        print('您要修改的学生信息不存在!', end='')

#删除逻辑
def del_student(students_list, student_dict):
    del_student_dict = input("请输入要删除的学生姓名:")
    for i in students_list:
        if i["name"] == del_student_dict:
            students_list.remove(i)
            print(f'学生:{i["name"]} 信息已删除!')
            break
    else:
        print('您要删除的信息不存在')

#查询学生信息逻辑
def query_student(students_list, student_dict):
    student_name_input = input('请输入您要查询的学生姓名:')
    for i in students_list:
        if student_name_input == i["name"]:
            print(f'学生姓名:{i["name"]}', f'性别:{i["gender"]}', f'年龄:{i["age"]}', f'成绩:{i["score"]}', sep='    ')

    else:
        print("你要查询的学生信息不存在!!!")

#查询所有学生信息逻辑
def data_student(students_list, student_dict):
    if len(students_list) == 0:
        print('没有学生信息!!!', end='')
    else:
        for i in students_list:
            print(f'学生姓名:{i["name"]}',f'性别:{i["gender"]}',f'年龄:{i["age"]}',f'成绩:{i["score"]}',sep='    ')

code()
我修改逻辑的 i["name"], i["gender"], i["age"], i['score'] = name, gender, age, score 这段代码为什么不报错,还出效果了,请大神解释一下,谢谢。
最佳答案
2020-10-9 11:36:06
你应该先确定这个人的信息存不存在,然后再录入信息,而不是从所有数据中一个一个的进行对比,然后重复输入

最佳答案

查看完整内容

你应该先确定这个人的信息存不存在,然后再录入信息,而不是从所有数据中一个一个的进行对比,然后重复输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-9 11:36:06 | 显示全部楼层    本楼为最佳答案   
你应该先确定这个人的信息存不存在,然后再录入信息,而不是从所有数据中一个一个的进行对比,然后重复输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-9 12:54:36 | 显示全部楼层
本帖最后由 kylin121380 于 2020-10-9 12:55 编辑

i经过for循环内后已经被赋值为students_list中的最后一个,你的修改就是在修改这个,只要名字存在,修改都只是最后一个人的信息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-9 15:23:34 | 显示全部楼层
kylin121380 发表于 2020-10-9 12:54
i经过for循环内后已经被赋值为students_list中的最后一个,你的修改就是在修改这个,只要名字存在,修改都 ...

def add_student(students_list, student_dict):
    student_name = {}
    name = input("请输入学生姓名:")
    for i in students_list:
        if name != i['name']:
            student_dict["name"], student_dict["gender"], student_dict["age"],student_dict['score'] = name, input("请输入学生性别:"), input("请输入学生年龄:"), input("请输入学生成绩:")
            students_list.append(student_dict)
            print('学生添加完成,', end='')
            break
        else:
            print('您要添加的学生信息已存在!',end='')
            break

添加逻辑这么写为什么不行呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-9 22:00:30 | 显示全部楼层
发现你的列表里面有两个字典
for 循环每一次循环取出的是一个字典,i[name] 相对应的就是每一个字典,这么说能理解了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-10 17:09:04 | 显示全部楼层
kylin121380 发表于 2020-10-9 11:36
你应该先确定这个人的信息存不存在,然后再录入信息,而不是从所有数据中一个一个的进行对比,然后重复输入

有没有什么简便的方法去写,这么写感觉像绕了一个圈再去解决问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-10 23:04:28 | 显示全部楼层
y863886220 发表于 2020-10-10 17:09
有没有什么简便的方法去写,这么写感觉像绕了一个圈再去解决问题

像你修改信息那样弄一下吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 10:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表