代码求解释!
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 这段代码为什么不报错,还出效果了,请大神解释一下,谢谢。
你应该先确定这个人的信息存不存在,然后再录入信息,而不是从所有数据中一个一个的进行对比,然后重复输入 本帖最后由 kylin121380 于 2020-10-9 12:55 编辑
i经过for循环内后已经被赋值为students_list中的最后一个,你的修改就是在修改这个,只要名字存在,修改都只是最后一个人的信息 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
添加逻辑这么写为什么不行呢? 发现你的列表里面有两个字典
for 循环每一次循环取出的是一个字典,i 相对应的就是每一个字典,这么说能理解了吗?{:10_256:}{:10_256:} kylin121380 发表于 2020-10-9 11:36
你应该先确定这个人的信息存不存在,然后再录入信息,而不是从所有数据中一个一个的进行对比,然后重复输入
有没有什么简便的方法去写,这么写感觉像绕了一个圈再去解决问题
。 y863886220 发表于 2020-10-10 17:09
有没有什么简便的方法去写,这么写感觉像绕了一个圈再去解决问题
。
像你修改信息那样弄一下吧{:10_277:}
页:
[1]