内容正文:
任务4.2 列表
成绩统计
4.2 列表——成绩统计
【任务描述】
考试结束,小T要帮助导师统计出某班级(15人)《Python程序设计》课程成绩的平均分、不及格人数和不及格率、及格人数和及格率、优秀人数和优秀率。
4.2 列表——成绩统计
统计班级课程成绩
平均分
不及格人数和不及格率、
及格人数和及格率
优秀人数和优秀率
4.2 列表——成绩统计
【任务分析】
根据经验,我们可以用Python中的列表数据类型解决该任务。
(1)定义列表,列表中存储班级课程成绩。
(2)遍历列表,计算总分,统计不及格人数、优秀人数。
(3)输出平均分、不及格人数和不及格率、及格人数和及格率、优秀人数和优秀率。
4.2 列表——成绩统计
4.2.1 列表的基本操作
4.2.2 列表的常用方法
4.2.3 列表任务实现——成绩统计
4.2.2 列表的常用方法
4.2.2 列表的常用方法
列表元素的添加
列表元素的删除
列表的排序
列表元素的统计
4.2.2 列表的常用方法
方法 说明
list.append(x) 在列表list的最后增加一个元素x
list.insert(i,x) 在列表list中索引为i的位置前增加元素x
list.extend(L) 将列表L中所有元素追加到列表list的末尾
list.pop(i) 删除并返回列表中索引为i的元素,i默认值为-1
list.remove(x) 在列表list中删除第一个值为x的元素,如果list中不存在x,则抛出异常
list.count(x) 返回x在列表list中出现的次数
list.index(x) 返回列表list中第一个值为x的元素的索引,若不存在,则抛出异常
list.sort() 将列表list中的元素按从小到大排列
list.reverse() 将列表list中的元素反转
del list[索引值] 将list[索引值]元素从列表中删除
list1+ list2 将两个列表合并为一个列表
list*n 重复合并同一个列表n次
1.列表元素的添加append、insert、extend
list.append(x):在列表list的最后增加一个元素x
lstName=['李白','杜甫','王维','苏轼']
lstName.append('陆游')
print(lstName)
['李白', '杜甫', '王维', '苏轼', '陆游']
4.2.2 列表的常用方法
4.2.2 列表的常用方法
list.insert(i,x):在列表list的索引为i的位置前增加元素x
#接上一题,在lstName第3个名字(王维)前增加“李清照”
lstName.insert(2,'李清照')
print(lstName)
['李白', '杜甫', '李清照', '王维', '苏轼', '陆游']
4.2.2 列表的常用方法
list.extend(L):将列表L中所有元素追加到列表list的末尾
#接上一题,在lstName末尾追加列表中lstPainter的元素
lstPainter=['顾恺之','吴道子','齐白石']
lstName.extend(lstPainter)
print(lstName)
['李白', '杜甫', '李清照', '王维', '苏轼', '陆游', '顾恺之', '吴道子', '齐白石']
2.列表元素的删除pop、remove
list.pop(i):删除并返回列表中索引为i的元素,i默认值为-1
#接上一题,在lstName删除倒数第二个元素
lstName.pop(-2)
print(lstName)#pop后的列表中元素少了索引为-2的元素
['李白', '杜甫', '李清照', '王维', '苏轼', '陆游', '顾恺之', '齐白石']
4.2.2 列表的常用方法
4.2.2 列表的常用方法
list.remove(x):在列表list中删除第一个值为x元素,
如果list中不存在x,则抛出异常。
#接上一题,在lstName中删除“陆游”
lstName.remove('陆游')
print(lstName)
['李白', '杜甫', '李清照', '王维', '苏轼', '顾恺之', '齐白石']
4.2.2 列表的常用方法
即学即答:
已知 x = [1, 2, 3, 2, 3],执行语句 x.remove(2) 之后,x的值是( )。
A .[1, 3, 3] B.[1, 3, 2, 3]
C .[1, 2, 2, 3] D.[1, 2, 3, 3]
3.列表元素的排序sort、reverse
list.sort(key=None, reverse=False):将列表list中的元素按规则排列。
lstNumber=[1,5,4,2,3]
lstNumber.sort()
print(lstNumber)
[1, 2, 3, 4, 5]
4.2.2 列表的常用方法
list.reverse():将列表list中的元素反转
lstNumber=[1,5,4,2,3]
lstNumber.reverse()
print(lstNumber)
[3, 2, 4, 5, 1]
4.2.2 列表的常用方法
4.2.2 列表的常用方法
即学即答:
已知x为非空列表,那么x.sort(reverse=True)和x.reverse()的作用是等价的。
A.对
B.错
4.列表元素的统计count、index
list.count(x):返回x在列表list中出现的次数
lstNumber=[1,5,4,2,3,4,3,4,6,7]
print(lstNumber.count(4))#统计元素4在列表中出现的次数
3
4.2.2 列表的常用方法
list.index(x):返回列表list中第一个值为x的元素的索引,若不存在,则抛出异常
lstNumber=[1,5,4,2,3,4,3,4,6,7]#元素4在列表中第一次出现的索引值
print(lstNumber.index(4))
2
4.2.2 列表的常用方法
4.2.2 列表的常用方法
边学边练:
(1)创建一个列表lstClassmates,为本班级学号前10的同学名字。
(2)在列表末尾添加一名字为“令狐冲”的同学,并输出该列表的长度。
(3)返回列表中元素“令狐冲”的索引值,根据索引值删除它,再输出该列表的长度
4.2.3 列表任务实现——成绩统计
4.2.3 列表任务实现——成绩统计
【任务描述】
小T帮助导师统计出某班级中《Python程序设计》课程成绩的平均分、不及格人数和不及格率、及格人数和及格率、优秀人数和优秀率(其中90及90分以上为优秀)。
4.2.3 列表任务实现——成绩统计
班级课程成绩
平均分
不及格人数和不及格率、
及格人数和及格率、
优秀人数和优秀率
4.2.3 列表任务实现——成绩统计
【任务分析】
小T打算先将成绩定义在列表中,再遍历该列表;每遍历一个成绩,需要将该成绩加入总分、判断成绩等级并在对应成绩等级的计数中加1;根据总人数,求平均成绩、不及格率、及格率和优秀率。
(1)定义列表,列表中存储班级成绩。
(2)遍历列表,计算总分,统计不及格人数、优秀人数。
(3)输出平均分、不及格人数和不及格率、及格人数和及格率、优秀人数和优秀率。
4.2.3 列表任务实现——成绩统计
定义成绩列表,初始化变量
不及格人数+1
遍历列表结束
Y
N
优秀人数+1
加入总成绩
成绩为优秀
成绩为及格
及格人数+1
求出平均分、优秀率、及格率等
结束
(1)定义列表,初始化变量
(2)遍历列表,计算总分,统计不及格人数、优秀人数
(3)计算并输出平均分、不及格人数和不及格率、及格人数和及格率、优秀人数和优秀率
4.2.3 列表任务实现——成绩统计
lstScore=[86,92,95,78,62,54,78,74,70,69,86,73,45,75,57]
exce=0 #优秀人数
nopass=0 #不及格人数
sumScore=0 #存放总分
(1)定义列表,初始化变量
4.2.3 列表任务实现——成绩统计
for score in lstScore:
sumScore+=score #计算总分
if score>=90:
exce+=1 #统计优秀人数
elif score<60:
nopass+=1 #统计不及格人数
(2)遍历列表,计算总分,统计不及格人数、优秀人数
4.2.3 列表任务实现——成绩统计
aveScore=sumScore/len(lstScore) # 计算平均分
print("全班共{}人;".format(len(lstScore)))
print("平均分是{:.2f}分;".format(aveScore))
print("不及格人数是{}人,不及格率为{:.2%};".format(nopass,nopass/len(lstScore)))
print("及格人数是{}人,及格率为{:.2%};".format(len(lstScore)-nopass, 1-nopass/ len(lstScore)))
print("优秀人数是{}人,优秀率为{:.2%}。".format(exce,exce/len(lstScore)))
(3)计算并输出平均分、不及格人数和不及格率、及格人数和及格率、优秀人数和优秀率
4.2.3 列表任务实现——成绩统计
运行结果
全班共15人;
平均分是72.93分;
不及格人数是3人,不及格率为20.00%;
及格人数是12人,及格率为80.00%;
优秀人数是2人,优秀率为13.33%。
$$