开发者学堂课程【Python 入门 2020年版:查找用户功能的实现 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10438
查找用户功能的实现
内容介绍:
一.显示学生功能
二.同名情况
三.代码简化
1. 显示学生功能
def show_ student():
x=input('1.査看所有学生\ n2.根据姓名査找\ n3.根据学号査找\n其他:返回\n请选择:')
y = file_manager.read_json(name+ '.json', {})
#if not y:
#如果文件不存在,y 是一个空字典 {}students=[]
# else:
students=y['all_student']
students=y.get('all.student', [])
if x=='1':
pass
elif x=='2':
pass
elif x=='3':
pass
else:
pass
运行结果:
**欢迎采到学生管理系统**
◆1.登录
◆2.注册
◆3.退出
请选择 (1-3):1
请输入老师账号: jack
请输入密码: 12345
欢迎 Jack 老师进入学生管理系统
▼1.添加学生
▼2.查看学生
▼3.修改学生信息
▼4.删除学生
▼5.返回
请选择 (1-5):2
1.查看所有学生
2.根据姓名查找
3.根据学号查找
其他:返回
请选择: 1
学号: stu_0001, 姓名: mery,性别: female, 年龄:17, tel:112
学号: stu_0002,姓名: jimmy,性别: male,年龄: 13,tel:113
欢迎 Jack 老师进入学生管理系统
▼1.添加学生
▼2.查看学生
▼3.修改学生信息
▼4.删除学生
▼5.返回
请选择(1-5):1
请输入学生姓名: jimmy
请输入年龄: 14
请输入性别: male
请输入电话号码: 117
添加成功!
1.继续
2.返回
请选择(1-2):1
请输入学生姓名: hellen
请输入年龄: 18
请输入性别: male
请输入电话号码: 111
添加成功!
1.继续
2.返回
请选择(1-2): 1
请输入学生姓名: mery
请输入年龄: 23
请输入性别: male
请输入电话号码: 111
欢迎 Jack 老师进入学生管理系统
▼1.添加学生
▼2.查看学生
▼3.修改学生信息
▼4.删除学生
▼5.返回
请选择( 1-5):2
学号: stu_0001,姓名: mery,性别: female,年龄: 17,tel: 112
学号: stu_0002,姓名: jimmy,性别: male,年龄: 13,tel: 113
学号: stu_0003,姓名: jimmy,性别: male,年龄: 14,tel: 117
学号: stu_0004,姓名: hellen,性别: male,年龄: 18,tel: 116
学号: stu_0005,姓名 mery,性别: male,年龄: 23,tel: 111
欢迎 Jack 老师进入学生管理系统
▼1.添加学生
▼2.查看学生
▼3.修改学生信息
▼4.删除学生
▼5.返回
2. 同名情况
(1)s_id 形式
elif x=='2':
s_name = input('请输入学生姓名:')
same_name_students=[]
for student in students:
if student['name']==S_name:
same_ name_ students . append( student)
for student in same_ name_ students :
print('学号:{s__id},姓名:{name},性别:{gender},年龄:{age},s:{te1}'.format(**)
运行结果:
欢迎 Jack 老师进入学生管理系统
▼1.添加学生
▼2.查看学生
▼3.修改学生信息
▼4.删除学生
▼5.返回
请选择 (1-5):2
请输入学员姓名: mery
学号: stu_0001,姓名: mery,性别: female,年龄: 17,tel: 112
学号: stu_0005,姓名: mery,性别: male,年龄: 23,tel: 111
(2)filter() 形式
介绍:
In[2]:ages=[12,19,17,20,18,15,21]
In[3]:ages.filter(lambda age:age >=18,ages)
Traceback(most recent call last):
File"C: Users chris AppDatalLocal Programs Python Python37libsite-pexec(code_obj,self.user_global_ ns,self.user_ns)
File"<ipython- input-3-ffa1bfa498e5>",line,in<module>
ages.filter(lambda age:age >=18,ages)
'AttributeError:"list' object has no attribute'filter'
In[4]:filter(lambda age:age >= 18,ages)Out[4]:<filter at 0x1a1c1d41e08>
In[5]: list(filter(lambda age:age >= 18, ages))0ut[5]:[19,20,18, 21]
代码:
print('学号:{s_id},姓名:{name},性别:{gender},年龄:{age},:{te1}'.format(**student)
elif x=='2':
s_name=input('请输入学员姓名:')
#same_name_students=[]
#for student in students:
if student[ 'name']==s_name:
same_name_students.append(student )
#filter结果是一个filter类,它是一个可迭代对象
same_name_students=filter(lambda s:s['name']==S__name, students )
for student in same_ name_ students :
print('学号:{s_ id}, 姓名:{name},性别:{gender},年龄:{age},西:{te1}' .format(**student) )
3. 对代码进行简化
def show_student():
key=value=
x=input('1.査看所有学生\n2.根据姓名査找\n3.根据学号査找\n其他:返回\n请选择:')
y=file manager .read_ json(name+'.json',{})
students = y.get('all_ student', [])if not students:
print('孩老師逐没有学員,清添加学員')return
if x=='1':
#査洵所有pass
elif x=='2'
value=input('请输入学生姓名:')
key =' name
elif x=='3':
value=input('请输入学生的id:')
key = 's_ _id'
else:
return
students = filter(lambda s:s[key]==value, students)
If not students :
print('未找到学员')
return
#s= "s_id":"stu_0001","name":"mery","age":"17","gender":"female","tel":"112"]
#s.get(key,'')==values.get('','')==>
students = filter(lambda s: s.get(key == value, students)
if not students:
print('未找到学员')return
for student in students :
print('学号:{s_ _id}, 姓名:{name},性别: {gender},年龄:{age},:{te1}'.format(**student))