一些关于自己学习Python的经历的内容,遇到的问题和思考等,方便以后查询和复习。
声明:本人学习是在扇贝编程通过网络学习的,相关的知识、案例来源于扇贝编程。如果使用请说明来源。
第十二关:列表初阶
练习:谁排倒数后三名
刚刚听班主任讲她看到几门考试的倒数三名里都有贾宝玉和秦可卿,我们来统计贾宝玉和秦可卿他们到底在几门课里是倒数前三呢?
要求: 在屏幕上分别打印出:
贾宝玉排在倒数三名的次数是 xxx
秦可卿排在倒数三名的次数是 xxx
注意:要将 xxx 替换为计算的结果哦~
code_ranks = [
'贾惜春', '贾巧姐', '李纨',
'秦可卿', '史湘云', '王熙凤',
'薛宝钗', '林黛玉', '妙玉',
'贾迎春', '贾宝玉', '探春'
]
code=code_ranks[-3:]
chinese_ranks = [
'林黛玉', '薛宝钗', '贾宝玉',
'贾探春', '史湘云', '贾迎春',
'贾惜春', '王熙凤', '贾巧姐',
'李纨', '妙玉', '秦可卿'
]
chinese = chinese_ranks[-3:]
math_ranks = [
'王熙凤', '贾迎春', '妙玉',
'林黛玉', '贾惜春', '贾巧姐',
'贾探春', '史湘云', '秦可卿',
'李纨', '薛宝钗', '贾宝玉'
]
math = math_ranks[-3:]
baoyu = code.count('贾宝玉') + chinese.count('贾宝玉') + math.count('贾宝玉')
keqing = code.count('秦可卿') + chinese.count('秦可卿') + math.count('秦可卿')
# 想一想如何计算出贾宝玉和秦可卿排在倒数三名的次数
print('贾宝玉排在倒数三名的次数是', baoyu)
print('秦可卿排在倒数三名的次数是', keqing)
感觉头秃啊,实在做不出来,后来想不是要统计排倒数第三的次数吗,那我先找出每门成绩排第三的都是哪些人,这样得到新的列表,然后在新列表中进行统计,再相加,就可以了
1 每门课的排名倒数第三的列表
2 统计二人再每门课中排倒数第三次数,其实就是一次或零次
3 三门课统计次数相加
结果一运行,决然绿灯通过
赶紧看答案:
肯定不一样,但是思路是完全一样的,只是答案更为简洁,非常开心自己坚持解题,没有直接看答案
答案的思路是把三个列表排名倒数第三的列表求出来,并且直接相加了,这样就可以得到一个新的列表了。这里用到了列表相加,答案超纲了把,哈哈哈
然后再新列表中统计两个人出现的次数。
我是先统计后加,答案是先加起来,后统计。思路基本一致。都要找出排名后三的列表。
练习:菜单
food = [
'玫瑰膏',
'新栗粉糕',
'鸡油卷',
'燕窝',
'烤鹿肉',
'木樨清露'
]
# 用 del 语句去掉鸡油卷
del food[2]
# 用 remove() 方法去掉烤鹿肉
food.remove('烤鹿肉')
# 打印出去掉上面两种食物后的食物清单
print(food)
谁值班
你正在安排大观园班下一周的值日表,一周七天每天都要有一个同学负责班里的卫生。你将他们的值日排班按周一到周日的顺序写进了列表 on_duty 中。
试着用将下面的代码补全,用分片的方式查询:
周一和周二分别是谁值日;
周三到周五是谁值日;
周末两天是谁值日。
on_duty = [
'贾琏',
'王熙凤',
'林黛玉',
'贾宝玉',
'李纨',
'薛宝钗',
'妙玉'
]
# 打印周一周二值日的人
print(on_duty[:2])
# 打印周三到周五值日的人
print(on_duty[2:5])
# 打印周末值日的人
print(on_duty[5:7])
答案最后一行写的是[5:],由于是最后几个,所以就省略了结束索引。
虽然最大索引只有6,但是如写成[5:6],则只包含一个元素。[5:7]则包含5/6两个元素
练习:成绩极值
你将 14 名学生的在上一节中的期中考试成绩放入了名为 scores 的列表中,不过还没有进行排序。
现在,你需要统计这次考试成绩的极差(最高分与最低分的差值),以及有多少人考了满分 100 分。
来完善代码,算出上面需要的两个值吧~
scores = [100, 92, 77, 85, 81, 90, 100, 86, 79, 93, 91, 96, 75, 84]
# 对 scores 进行排序
scores.sort()
# 计算这次考试成绩的极差
result = scores[13] - scores[0] # result = scores[-1] - scores[0]
print(result)
# 统计考100分的人数
print(scores.count(100))
由于排序默认升序排列的,所以极值=最大值-最小值,可以用排序之后的最后一个元素-第一个元素
最后一个元素用 列表名[-1]就可以了,这样不用计算最后一个元素的索引是多少了。

网友评论