1.写一个程序
a.用一个变量来保存一个班级的学生信息(姓名,学号,成绩(英语,美术,体育,数学),年龄)
b.给这个班级添加学生
c.根据姓名查看班级里的某个学生的信息
d.根据姓名删除一个指定的学生信息
e.查看班级的所有的学生信息
f.求指定的学生平均成绩
students = [{'name':'tony','s_id':'2018001','age':'23','scores':{'English':87,'Art':97,'Gym':88,'Math':99}},
{'name':'mark','s_id':'2018002','age':'25','scores':{'English':85,'Art':92,'Gym':80,'Math':91}},
{'name':'jhon','s_id':'2018003','age':'27','scores':{'English':77,'Art':100,'Gym':68,'Math':100}}]
#name --学生姓名 s_id --学生学号 age --学生年龄 scores --学生成绩 English --英语成绩 Art --美术成绩 Gym --体育成绩 Math --数学成绩
name = input('输入一个学生的姓名以查看其信息:')
for x in students:
if x['name'] == name:
for y in x:
try:
print(y+':'+x[y],end=' ')
except:
print('scores:',end=' ')
for i in x[y]:
print(i+':'+str(x[y][i]),end=' ') # 通过循环输出学生信息,在转化过程中使用try语句实现对各项成绩的输出
print()
del_name = input('输入一个学生的姓名以删除其信息:')
for x in students:
if x['name'] == del_name:
index = students.index(x)
del students[index] #获取字典在列表中的位置,使用del删除
order = input('是否查看所有的学生信息y/n:')
if order == 'y':
for x in students:
for y in x:
try:
print(y+':'+x[y],end=' ')
except:
print('scores:',end=' ')
for i in x[y]:
print(i+':'+str(x[y][i]),end=' ')
print()
avg_name = input('输入一个学生的姓名以查看其平均成绩:')
total = 0
for x in students:
if x['name'] == avg_name:
for y in x['scores']:
total += x['scores'][y]
print('该生的平均成绩是:'+str(total/4))
2.尝试着写学生管理系统
注:因为没有全面排查代码的bug,有要尝试这套代码的同学请严格按照输入要求,当然如果你能排查到的地方,可以帮我加个try:except:抛个异常也是多多感谢
# students = [] # 存储学生
# student_scores = {''} # 存储学生的多项成绩
# student_info = {'name':None,'s_id':None,'age':None,'scores':None} # 存储学生的信息
students = []
student_count = 0 # 添加过的学生计数
def stu_add(name:str,age:str,english,art,gym,math,students:list): # 添加学生
student_info = {'name': None, 's_id': None, 'age': None, 'scores': None}
student_info['name'] = name
student_info['age'] = age
student_info['s_id'] = '2018'+str(student_count).rjust(3,'0')
student_scores = {'English':english,'Art':art,'Gym':gym,'Math':math}
student_info['scores'] = student_scores
students.append(student_info)
def avg_scores(avg_name:str,students:list): # 计算学生的平均成绩
total = 0
if '2018' not in avg_name: # 提供名字或者学号的选择性输入
for x in students:
if x['name'] == avg_name:
for y in x['scores']:
total += int(x['scores'][y])
print('该生的平均成绩是:'+str(total/4))
else:
for x in students:
if x['s_id'] == avg_name:
for y in x['scores']:
total += int(x['scores'][y])
print('该生的平均成绩是:'+str(total/4))
def stu_info(name:str,students:list): # 学生信息显示
if '2018' not in name:
for x in students:
if x['name'] == name:
for y in x:
try:
print(y+':'+x[y],end=' ')
except:
print('scores:',end=' ')
for i in x[y]:
print(i+':'+str(x[y][i]),end=' ') # 通过循环输出学生信息,在转化过程中使用try语句实现对各项成绩的输出
print()
avg_scores(name,students)
else:
for x in students:
if x['s_id'] == name:
for y in x:
try:
print(y+':'+x[y],end=' ')
except:
print('scores:',end=' ')
for i in x[y]:
print(i+':'+str(x[y][i]),end=' ') # 通过循环输出学生信息,在转化过程中使用try语句实现对各项成绩的输出
print()
avg_scores(name, students)
def del_stu(del_name:str,students:list): # 学生信息删除
if '2018' not in del_name:
for x in students:
if x['name'] == del_name:
index = students.index(x)
del students[index] #获取字典在列表中的位置,使用del删除
else:
for x in students:
if x['s_id'] == del_name:
index = students.index(x)
del students[index]
def all_info(students:list): # 所有学生信息查询
for x in students:
for y in x:
try:
print(y+':'+x[y],end=' ')
except:
print('scores:',end=' ')
for i in x[y]:
print(i+':'+str(x[y][i]),end=' ')
avg_scores(x['name'], students)
def update_info(upstr:str,age:str,english,art,gym,math,students:list): # 修改学生信息
if '2018' not in upstr:
for x in students:
if x['name'] == upstr:
if age != '':
x['scores']['age'] = age
if english != '':
x['scores']['English'] = english
if art != '':
x['scores']['Art'] = art
if gym != '':
x['scores']['Gym'] = gym
if math != '':
x['scores']['Math'] = math
else:
for x in students:
if x['s_id'] == upstr:
if age != '':
x['scores']['age'] = age
if english != '':
x['scores']['English'] = english
if art != '':
x['scores']['Art'] = art
if gym != '':
x['scores']['Gym'] = gym
if math != '':
x['scores']['Math'] = math
while True:
print('='*50)
title_sys = '学生信息管理系统'
title_fun1 = '1 添加学生'
title_fun2 = '2 修改信息'
title_fun3 = '3 查看学生'
title_fun4 = '4 删除学生'
title_fun5 = '5 所有学生'
title_fun6 = '6 立即退出'
print(title_sys.center(50),end='\n\n')
print(title_fun1.center(50))
print(title_fun2.center(50))
print(title_fun3.center(50))
print(title_fun4.center(50))
print(title_fun5.center(50))
print(title_fun6.center(50))
print('本系统学生编号自动生成,根据登记次序为‘2018xxx’')
print('='*50)
order = input('请输入您的命令:')
if order == '1':
while True:
student_count += 1
name = input('输入学生姓名:')
age = input('输入学生年龄:')
scores_ok = input('是否导入该生的成绩(若没有或者全科为0可以不填)y/n:')
if scores_ok == 'y':
english = input('输入英语成绩(没有填0):')
art = input('输入美术成绩(没有填0):')
gym = input('输入体育成绩(没有填0):')
math = input('输入数学成绩(没有填0):')
else:
english = 0
art = 0
gym = 0
math = 0
stu_add(name,age,english,art,gym,math,students)
add_ok = input('是否继续添加y/n:')
if add_ok == 'n':
break
elif order == '2':
while True:
upstr = input('请输入学号或者姓名:')
print('以下不需要修改的请按Enter键跳过')
age = input('请输入修改后的年龄:')
english = input('请输入修改后的英语成绩:')
art = input('请输入修改后的美术成绩:')
gym = input('请输入修改后的体育成绩:')
math = input('请输入修改后的数学成绩:')
update_info(upstr,age,english,art,gym,math,students)
update_ok = input('是否继续修改y/n:')
if update_ok == 'n':
break
elif order == '3':
while True:
info_name = input('请输入学号或者姓名:')
stu_info(info_name,students)
info_ok = input('是否继续查看y/n:')
if info_ok == 'n':
break
elif order == '4':
while True:
del_name = input('请输入学号或者姓名:')
del_stu(del_name,students)
del_ok = input('是否继续删除y/n:')
if del_ok == 'n':
break
elif order == '5':
all_info(students)
elif order == '6':
break
else:
continue
实验结果:
C:\Users\FL5600\PycharmProjects\venv\Scripts\python.exe C:/Users/FL5600/PycharmProjects/test/student_manage_system.py
==================================================
学生信息管理系统
1 添加学生
2 修改信息
3 查看学生
4 删除学生
5 所有学生
6 立即退出
本系统学生编号自动生成,根据登记次序为‘2018xxx’
==================================================
请输入您的命令:1
输入学生姓名:唐明
输入学生年龄:35
是否导入该生的成绩(若没有或者全科为0可以不填)y/n:y
输入英语成绩(没有填0):69
输入美术成绩(没有填0):89
输入体育成绩(没有填0):80
输入数学成绩(没有填0):99
是否继续添加y/n:y
输入学生姓名:王强
输入学生年龄:80
是否导入该生的成绩(若没有或者全科为0可以不填)y/n:y
输入英语成绩(没有填0):100
输入美术成绩(没有填0):100
输入体育成绩(没有填0):100
输入数学成绩(没有填0):100
是否继续添加y/n:y
输入学生姓名:李星
输入学生年龄:27
是否导入该生的成绩(若没有或者全科为0可以不填)y/n:y
输入英语成绩(没有填0):44
输入美术成绩(没有填0):69
输入体育成绩(没有填0):80
输入数学成绩(没有填0):100
是否继续添加y/n:n
==================================================
学生信息管理系统
1 添加学生
2 修改信息
3 查看学生
4 删除学生
5 所有学生
6 立即退出
本系统学生编号自动生成,根据登记次序为‘2018xxx’
==================================================
请输入您的命令:5
name:唐明 s_id:2018001 age:35 scores: English:69 Art:89 Gym:80 Math:99 该生的平均成绩是:84.25
name:王强 s_id:2018002 age:80 scores: English:100 Art:100 Gym:100 Math:100 该生的平均成绩是:100.0
name:李星 s_id:2018003 age:27 scores: English:44 Art:69 Gym:80 Math:100 该生的平均成绩是:73.25
==================================================
学生信息管理系统
1 添加学生
2 修改信息
3 查看学生
4 删除学生
5 所有学生
6 立即退出
本系统学生编号自动生成,根据登记次序为‘2018xxx’
==================================================
请输入您的命令:3
请输入学号或者姓名:唐明
name:唐明 s_id:2018001 age:35 scores: English:69 Art:89 Gym:80 Math:99
该生的平均成绩是:84.25
是否继续查看y/n:y
请输入学号或者姓名:2018003
name:李星 s_id:2018003 age:27 scores: English:44 Art:69 Gym:80 Math:100
该生的平均成绩是:73.25
是否继续查看y/n:n
==================================================
学生信息管理系统
1 添加学生
2 修改信息
3 查看学生
4 删除学生
5 所有学生
6 立即退出
本系统学生编号自动生成,根据登记次序为‘2018xxx’
==================================================
请输入您的命令:2
请输入学号或者姓名:2018002
以下不需要修改的请按Enter键跳过
请输入修改后的年龄:
请输入修改后的英语成绩:
请输入修改后的美术成绩:0
请输入修改后的体育成绩:0
请输入修改后的数学成绩:0
是否继续修改y/n:n
==================================================
学生信息管理系统
1 添加学生
2 修改信息
3 查看学生
4 删除学生
5 所有学生
6 立即退出
本系统学生编号自动生成,根据登记次序为‘2018xxx’
==================================================
请输入您的命令:5
name:唐明 s_id:2018001 age:35 scores: English:69 Art:89 Gym:80 Math:99 该生的平均成绩是:84.25
name:王强 s_id:2018002 age:80 scores: English:100 Art:0 Gym:0 Math:0 该生的平均成绩是:25.0
name:李星 s_id:2018003 age:27 scores: English:44 Art:69 Gym:80 Math:100 该生的平均成绩是:73.25
==================================================
学生信息管理系统
1 添加学生
2 修改信息
3 查看学生
4 删除学生
5 所有学生
6 立即退出
本系统学生编号自动生成,根据登记次序为‘2018xxx’
==================================================
请输入您的命令:6
Process finished with exit code 0