最后那段根据性别查找学生的功能为什么只能返回一个啊

来源: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循环

http://img.mukewang.com/climg/6115e4780936ed0403560124.jpg

2、可以将返回的结果的代码即return result,放到和for循环同一级别下,如下图

http://img.mukewang.com/climg/6115e6100943ddd902990078.jpg

祝学习愉快!

0

0 学习 · 4470 问题

查看课程