python课后练习——评估歌手或选手成绩
- 有10个评委打分,分值在[0, 10],去掉一个最高分和一个最低分,再求平 均分
简单分析 ,可以知道我们需要将分数录进一个列表,再将它去掉最低分和最高分然后汇总再除以剩下总人数,即用到max、min函数,sum函数和len函数。(基础篇如有不懂可暂时转至导师howord2005的讲课笔记,2020年python学习笔记目录,本人在后面了解了python后会发布基础知识类的文章) - 编写程序 - 歌手得分计算程序.py
'''
功能:简易计算歌手成绩
作者:
日期:
'''
alls = []
for i in range(10):
grade = float(input('第{}位评委给出:'.format(i + 1)))
alls.append(grade)
average = ((sum(alls) - max(alls) - min(alls)) / (len(alls) - 2))
print('歌手最终得分:{:.2f}'.format(average))
运行结果:
简单的计算一个歌手成绩的小程序就出来了
现在我们来对这个程序进行优化:
1.对评委打分进行一个限额,即提供一个有效分数范围(0~10)
大家可以先想想我们以前做过的一个猜数游戏(详情可以了解导师的专栏循环讲的课后练习)当然后面我也会把猜数游戏的案题发出来。
我们这个优化需要来判断输入的值是否在合理范围,结果如下:
在运行时我们会发现,程序会有些问题:
比如
我们看到在输入错误数字两次之后,直接跳到了下一个评委,像这种情况我们可以在前面添加一个while循环就可以解决了(这里要注意,我们在使用while Ture的时候一定要记得加break来结束循环,不然会一直循环下去从而达不到我们想要的效果)
还有其他方法值得我们去尝试,后面发现了新方法会补充进来,大家也可以和我私聊沟通。下面就让我们继续来完善这个程序,如果是多名歌手我们应该怎么样去实现呢,用刚刚的思路,我们可以在外面在添加一个for循环即可
如下:
当然这个程序还是可以继续优化的,不过这个就留下作为思考吧。
这个求歌手的小任务就完成了,大家可以不看代码自己去试试。