输入学生的学号、姓名、性别、三门课程成绩,以“#”结束,其中学号、姓名和性别为字符串,成绩可以是整数或浮点数。
按学号顺序输出学生的学号、姓名、性别和平均成绩,以空格隔开。
并依次列出每门课程的平均成绩、最高成绩、最低成绩、不及格人数。
若只输入“#”,则输出“没有学生信息!”
提示:其中平均成绩保留两位小数,如成绩为x,则以int(x*100)/100的形式输出
输入格式:
每一行输入一个学生的学号、姓名、性别和三门课程成绩,最后一行输入“#”
输出格式:
按学号顺序输出学生的学号、姓名、性别和平均成绩,以空格隔开。一行表示一个学生
然后输出一个空行
输出每门课程的平均成绩、最高成绩、最低成绩、不及格人数。一行表示一门课程
望采纳
import operator
b=[]
c=[]
d=[]
while True:
a=input('请输入学生的学号,姓名,性别,三门课成绩:')
a=a.split(' ')
if '#' in a:
break
for i in range(3,6):
a[i]=float(a[i])
b.append(a)
b.sort(key=operator.itemgetter(0),reverse=False)
for i in range(len(b)):
print(b[i][0],b[i][1],b[i][2],int(100*((b[i][3]+b[i][4]+b[i][5])/3))/100)
print(' ')
for j in range(3,6):
for i in range(len(b)):
c.append(b[i][j])
d.append(c)
c=[]
for k in range(len(d)):
z=0
for w in d[k]:
if w <60:
z+=1
sum=0
for e in range(len(d[k])):
sum+=d[k][e]
print('%.2f'%(sum/len(b)),int(max(d[k])),int(min(d[k])),z)
解答结果
请输入学生的学号,姓名,性别,三门课成绩:abc10 ccc 男 100 50 90
请输入学生的学号,姓名,性别,三门课成绩:aaca01 aaa 女 90 90 90
请输入学生的学号,姓名,性别,三门课成绩:bcd1002 bbb 男 80 86 89
请输入学生的学号,姓名,性别,三门课成绩:1004 ddd 女 59 45 98
请输入学生的学号,姓名,性别,三门课成绩:#
1004 ddd 女 67.33
aaca01 aaa 女 90.0
abc10 ccc 男 80.0
bcd1002 bbb 男 85.0
82.25 100 59 1
67.75 90 45 2
91.75 98 89 0
这题目也不难呀,你可以找视频学习一下下,这个https://www.zhihu.com/answer/778840509%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%9C%8B%E4%B8%80%E4%B8%8B
3.1 主要思路及代码执行过程
首先输入通风14-1班26个学生的姓名、学号、性别、年龄以及成绩信息为一个嵌套词典,将成绩单独编写一个数组。先打印出每个学生的个人信息,先建立一个key,
names=xueshengmingdan.keys()
之后利用for 循环,
for name in names:
之后,
print '姓名:',name,'学号:',xueshengmingdan[name]['学号'],'性别:',xueshengmingdan[name]['性别'],'年龄',xueshengmingdan[name]['年龄'],'成绩信息',xueshengmingdan[name]['成绩信息']。
如果要计算与年龄和成绩信息有关的问题,需要先定义两个空数组,
ages=[]
grades=[]
之后利用for循环,
for name in names:
ages.append(xueshengmingdan[name]['年龄'])
grades.append(xueshengmingdan[name]['成绩信息'])
之后便可打印与年龄和成绩信息有关的东西了:
print '最大年龄',max(ages) #最大年龄
print '最小年龄',min(ages) #最小年龄
print '平均年龄',(1.0*sum(ages)/len(ages)) #平均年龄
print '最高成绩',max(grades) #最高成绩
print '最低成绩',min(grades) #最低成绩
print '平均成绩',1.0*sum(grades)/len(grades) #平均成绩
但是,不要忘记引入math函数:
import math
要想使学生名单按成绩排序,就要定义一个函数:
def two_cmp(x1,x2):
return cmp(x11,x21)
b=sorted(grade,two_cmp)
print b #按成绩排序
3.2 程序的主要函数及功能
如果要增加学生 请输入
a={}
a=['xxx']={undefined
'学号':'xxxxxx',
'性别':'x'
'年龄':'xx'
'成绩信息':'xx'}
如果要删除某学生 请输入 del a['xx']
例如 print xueshengmingdan['朱诗豪']
如果想要修改某个学生的信息 请输入 xueshengmingdan['name']['修改的信息']='xxxx'
例如 xueshengmingdan['朱诗豪']['学号']=1403050127
如果想查找学生的某个信息 请输入 print xueshengmingdan['name']['查找的信息']
例如 print xueshengmingdan['黄靖宇']['学号']
4.源程序
import math
xueshengmingdan={undefined
'车永杰':{'学号':'1403050101','性别':'男','年龄':19,'成绩信息':80},
'陈晓军':{'学号':'1403050102','性别':'男','年龄':19,'成绩信息':76},
'程太阳':{'学号':'1403050103','性别':'男','年龄':19,'成绩信息':77},
'单宇轩':{'学号':'1403050104','性别':'男','年龄':19,'成绩信息':68},
'耿峰':{'学号':'1403050105','性别':'男','年龄':19,'成绩信息':72},
'顾生权':{'学号':'1403050106','性别':'男','年龄':20,'成绩信息':76},
'黄靖宇':{'学号':'1403050107','性别':'男','年龄':19,'成绩信息':74},
'刘天威':{'学号':'1403050108','性别':'男','年龄':19,'成绩信息':76},
'刘增富':{'学号':'1403050109','性别':'男','年龄':19,'成绩信息':56},
'刘凯元':{'学号':'1403050110','性别':'男','年龄':19,'成绩信息':68},
'鲁肖丰':{'学号':'1403050111','性别':'男','年龄':19,'成绩信息':76},
'路琦':{'学号':'1403050112','性别':'男','年龄':19,'成绩信息':76},
'聂朝刚':{'学号':'1403050113','性别':'男','年龄':19,'成绩信息':78},
'戚志鹏':{'学号':'1403050114','性别':'男','年龄':19,'成绩信息':76.5},
'齐佳民':{'学号':'1403050115','性别':'男','年龄':19,'成绩信息':100},
'司建伟':{'学号':'1403050116','性别':'男','年龄':19,'成绩信息':77},
'宋健':{'学号':'1403050117','性别':'男','年龄':19,'成绩信息':82},
'隋文武':{'学号':'1403050118','性别':'男','年龄':19,'成绩信息':86},
'王本松':{'学号':'1403050119','性别':'男','年龄':19,'成绩信息':46},
'王大勇':{'学号':'1403050120','性别':'男','年龄':19,'成绩信息':72},
'王哲':{'学号':'1403050121','性别':'男','年龄':19,'成绩信息':98},
'吴文祥':{'学号':'1403050122','性别':'男','年龄':19,'成绩信息':45},
'杨强':{'学号':'1403050123','性别':'男','年龄':23,'成绩信息':32},
'杨文杰':{'学号':'1403050124','性别':'男','年龄':19,'成绩信息':75},
'杨智宇':{'学号':'1403050125','性别':'男','年龄':19,'成绩信息':86},
'朱诗豪':{'学号':'1403050126','性别':'男','年龄':19,'成绩信息':66}
}
grade=[
['车永杰',80],
['陈晓军',76],
['程太阳',77],
['单宇轩',68],
['耿峰',72],
['顾生权',76],
['黄靖宇',74],
['刘天威',76],
['刘增富',56],
['刘凯元',68],
['鲁肖丰',76],
['路琦',76],
['聂朝刚',78],
['戚志鹏',76.5],
['齐佳民',100],
['司建伟',77],
['宋健',82],
['隋文武',86],
['王本松',46],
['王大勇',72],
['王哲',98],
['吴文祥',45],
['杨强',32],
['杨文杰',75],
['杨智宇',86],
['朱诗豪',66]]
ages=[]
grades=[]
names = xueshengmingdan.keys()
打印所有学生的姓名,学号,性别,年龄,成绩信息
for name in names:
ages.append(xueshengmingdan[name]['年龄'])
grades.append(xueshengmingdan[name]['成绩信息'])
def two_cmp(x1,x2):
return cmp(x11,x21)
print ' 欢迎使用班级档案管理系统'
print '---------------------------------------------------'
print ' 1.按成绩排序 '
print ' 2.全班人数'
print ' 3.最大年龄'
print ' 4.最小年龄'
print ' 5.平均年龄'
print ' 6.最高成绩'
print ' 7.最低成绩'
print ' 8.平均成绩'
print ' 9.打印所有学生的姓名,学号,性别,年龄,成绩信息'
print '----------------------------------------------------'
a=input('请输入要选择的操作:')
if a==1:
b=sorted(grade,two_cmp)
print b
elif a==2:
print '全班人数',len(names)
elif a==3:
print '最大年龄',max(ages)
elif a==4:
print '最小年龄',min(ages)
elif a==5:
print '平均年龄',(1.0*sum(ages)/len(ages))
elif a==6:
print '最高成绩',max(grades)
elif a==7:
print '最低成绩',min(grades)
elif a==8:
print ' 8.平均成绩',1.0*sum(grades)/len(grades)
else:
for name in names:
print '姓名:',name,'学号:',xueshengmingdan[name]['学号'],'性别:',xueshengmingdan[name]['性别'],'年龄',xueshengmingdan[name]['年龄'],'成绩信息',xueshengmingdan[name]['成绩信息']
'''
如果要增加学生 请输入
a={}
a=['xxx']={undefined
'学号':'xxxxxx',
'性别':'x'
'年龄':'xx'
'成绩信息':'xx'}
如果要删除某学生 请输入 del a['xx']
例如 print xueshengmingdan['朱诗豪']
如果想要修改某个学生的信息 请输入 xueshengmingdan['name']['修改的信息']='xxxx'
例如 xueshengmingdan['朱诗豪']['学号']=1403050127
如果想查找学生的某个信息 请输入 print xueshengmingdan['name']['查找的信息']
例如 print xueshengmingdan['黄靖宇']['学号']
制作人员信息
编码及测试人员:齐佳民
收集数据:隋文武
撰写报告:刘增富
答辩演讲:王大勇
'''