刚入门Python,找点练习做做,希望有朋友可以指导一下

输入学生的学号、姓名、性别、三门课程成绩,以“#”结束,其中学号、姓名和性别为字符串,成绩可以是整数或浮点数。

按学号顺序输出学生的学号、姓名、性别和平均成绩,以空格隔开。

并依次列出每门课程的平均成绩、最高成绩、最低成绩、不及格人数。

若只输入“#”,则输出“没有学生信息!”

提示:其中平均成绩保留两位小数,如成绩为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['黄靖宇']['学号']

制作人员信息

编码及测试人员:齐佳民

收集数据:隋文武

撰写报告:刘增富

答辩演讲:王大勇

'''