最后那段根据性别查找学生的功能为什么只能返回一个啊
来源:7-1 【案例】实现学生信息库
吴老师在线叛逃
2021-08-12 22:57:42
# coding:utf-8
students = {
1: {
'name': 'dewei',
'age': 19,
'class_number': 'A',
'sex': 'boy',
},
2: {
'name': '小慕',
'age': 15,
'class_number': 'B',
'sex': 'boy'
},
3: {
'name': '小曼',
'age': 14,
'class_number': 'A',
'sex': 'girl'
},
4: {
'name': '小高',
'age': 17,
'class_number': 'A',
'sex': 'boy'
},
5: {
'name': '小云',
'age': 16,
'class_number': 'B',
'sex': 'girl'
}
}
def check_user_info(**kwargs): # 检查数据
if 'name' not in kwargs:
return '没有发现学生姓名'
if 'age' not in kwargs:
return '没有发现学生年龄'
if 'class_number' not in kwargs:
return '没有发现学生班级'
if 'sex' not in kwargs:
return '没有发现学生性别'
return True
def get_all_students(): # 读取数据库内所有的数据
for id_, value in students.items():
print('学号:{}, 姓名:{}, 年龄:{},班级:{},性别:{}'.format(
id_, value['name'], value['age'], value['class_number'], value['sex']
))
return students
# get_all_students()
def add_students(**kwargs): # 添加数据
check = check_user_info(**kwargs)
if check != True:
print(check)
return
id_ = max(students) + 1
students[id_] = {
'name': kwargs['name'],
'age': kwargs['age'],
'sex': kwargs['sex'],
'class_number': kwargs['class_number']
}
# add_students(name='小白', age=16, sex='boy', class_number='A')
# get_all_students()
def delete_students(students_id): # 删除数据
if students_id not in students:
print('{}并不存在'.format(students_id))
else:
user_info = students.pop(students_id)
print('学号是{},{}同学的信息已被删除'.format(students_id, user_info['name']))
# delete_students(1)
# add_students(name='小白', age=16, sex='boy', class_number='A')
# get_all_students()
def update_student(student_id, **kwargs): # 更改数据
if student_id not in students:
print('{}该学号不存在'.format(student_id))
check = check_user_info(**kwargs)
if check != True:
print(check)
return
students[student_id] = kwargs
print('同学信息更新完毕')
update_student(1, name='dewei', age=22, class_number='A', sex='boy')
get_all_students()
def get_user_by_id(student_id): # 根据学号查询
return students.get(student_id)
print(get_user_by_id(1))
def search_users(**kwargs): # 根据年龄班级姓名性别查询
values = list(students.values())
key = None
value = None
result = []
if 'name' in kwargs:
key = 'name'
value = kwargs[key]
elif 'sex' in kwargs:
key = 'sex'
value = kwargs['sex']
elif 'class_number' in kwargs:
key = 'class_number'
value = kwargs[key]
elif 'age' in kwargs:
key = 'age'
value = kwargs[key]
else:
print('没有发现搜索的关键字')
return
for user in values:
if user[key] == value:
result.append(user)
return result
print('----------')
users = search_users(sex='boy')
print(users)
1回答
好帮手慕念
2021-08-13
同学,你好!
1、只能返回一个的原因是当执行for循环时,符合判断语句if的条件,在列表result中添加了一次数据,再执行return语句,就结束了for循环
2、可以将返回的结果的代码即return result,放到和for循环同一级别下,如下图
祝学习愉快!
相似问题