#初学者做的很差劲!!!!!defsystem_information():#打印菜单print('-'*20)print('[1]添加学员')print('[2]删除学员')print('[3]修改学员信息')print('[4]查询学员信息')print('[5]显示所有学员信息')print('[6]退出系统')print('-'*20)
stu_list=[{'name':'TOM','age':'18','gender':'man'},{'name':'test1','age':'19','gender':'man'},{'name':'ww','age':'19','gender':'man'}]#这个是学员列表,存储学员信息,可以为空,因为要调试所以就填了一些。defstu_informaiton():"""这个是用于增加学员信息时用的函数,其实不用单独出来一个函数也可以,只不过写都写了就懒得改了"""
name =input('请输入学员名字:')
age =input('请输入学员年龄:')
gender =input('请输入学员性别:')return{'name': name,'age': age,'gender':gender}defstu_name():""" 这个是用于后来查找学员、修改学员信息、删除学员信息,输入学员名字。"""
name=input('请输入学员名字:')return name
defadd_stu(stu_info):"""学员增加函数"""global stu_list #使用全局变量
stu_list.append(stu_info)print(stu_list)#这边其实不用加print,为了调试的时候方便所以加上。defwhereis_stu(name):"""通过输入的学员名字定位学员信息在列表的那个位置"""global stu_list
for i in stu_list:if name==i['name']:return i
defremove_stu(name):"""删除学员函数"""global stu_list
whereis=whereis_stu(name)
stu_list.remove(whereis)print(stu_list)#这边其实不用加print,为了调试的时候方便所以加上。defchange_stu(name):"""修改学员信息的函数"""global stu_list
whereis=whereis_stu(name)
change_key=input('请输入修改的学员信息key[name|age|gender]:')
change_value =input(f'请输入{change_key}修改后的学员信息:')
whereis[change_key]=change_value
defexist_stu(name):"""这个函数是用于通过输入的学员姓名判断学员信息的存在性"""# flag为0时无此学员,flag为1时有此学员global stu_list
flag=0for i in stu_list:if name == i['name']:print(f'学员{name}存在')
whereis=stu_list.index(i)print(f'{name}在学员列表第{whereis+1}个')
flag=1return flag
defquery_stu(name):"""这个是通过学员姓名查询学员信息的函数"""if(exist_stu(name)==0):
flag=0return flag
else:
flag =1return flag
while1:
system_information()
option=int(input('请输入您的选项:'))if option ==1:
name = stu_name()if(query_stu(name)==0):
stu_info = stu_informaiton()
add_stu(stu_info)elif option ==2:
name = stu_name()if(query_stu(name)==1):
remove_stu(name)print(f'学员{name}已删除!')else:print(f'学员{name}不存在,无法删除!')elif option ==3:
name = stu_name()if(query_stu(name)==1):
change_stu(name)else:print(f'学员{name}不存在,无法修改!')elif option ==4:
name = stu_name()if(query_stu(name)==0):print(f'学员{name}不存在!')elif option ==5:print(stu_list)elif option ==6:
exit()else:print('输入的值错误!')#这个代码其实还有很多可以优化的地方,比如通过增加字典的key-value去用id控制查找修改学员的信息。#代码其实有点繁琐,可以用for循环的else和if语句去判断学员的存在性。因为存在与不存在可以for循环内通过if执行语句中去break,和else正常执行实现2个分支。不是if和else搭配,是for 和else的搭配。#暂时就想到这么多,以后慢慢学再补充。