自学python-4-打分程序
本帖最后由 se6cxpp 于 2021-4-6 11:28 编辑这个案例有些老套,也是列表的综合练习,个人增加了一些难度
设计要求: 歌手大奖赛中,有5个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后,取其余3个分数的平均值位最终成绩。
知识点
列表索引
一、基础问题
1、解决评分录入
a=int(input("请输入第1位评委对选手的打分(0~100分):"))
b=int(input("请输入第2位评委对选手的打分(0~100分):"))
c=int(input("请输入第3位评委对选手的打分(0~100分):"))
d=int(input("请输入第4位评委对选手的打分(0~100分):"))
e=int(input("请输入第5位评委对选手的打分(0~100分):"))
print(a,b,c,d,e)
这个还是很小儿科,只需input即可实现
2、计算最大值与最小值
a=int(input("请输入第1位评委对选手的打分(0~100分):"))
b=int(input("请输入第2位评委对选手的打分(0~100分):"))
c=int(input("请输入第3位评委对选手的打分(0~100分):"))
d=int(input("请输入第4位评委对选手的打分(0~100分):"))
e=int(input("请输入第5位评委对选手的打分(0~100分):"))
print(max(a,b,c,d,e))
print(min(a,b,c,d,e))
3、“暴力”计算结果
a=int(input("请输入第1位评委对选手的打分(0~100分):"))
b=int(input("请输入第2位评委对选手的打分(0~100分):"))
c=int(input("请输入第3位评委对选手的打分(0~100分):"))
d=int(input("请输入第4位评委对选手的打分(0~100分):"))
e=int(input("请输入第5位评委对选手的打分(0~100分):"))
print(max(a,b,c,d,e))
print(min(a,b,c,d,e))
print((a+b+c+d+e-max(a,b,c,d,e)-min(a,b,c,d,e))/3)
通过简单的加减和除法得到预期结果
二、评委突增
问题:这时不再是5个评委而是20个评委
# a=int(input("请输入第1位评委对选手的打分(0~100分):"))
# b=int(input("请输入第2位评委对选手的打分(0~100分):"))
# c=int(input("请输入第3位评委对选手的打分(0~100分):"))
# d=int(input("请输入第4位评委对选手的打分(0~100分):"))
# e=int(input("请输入第5位评委对选手的打分(0~100分):"))
# f=...
# g=...
# h=...
# i=...
# j=...
# print(max(a,b,c,d,e...))
# print(min(a,b,c,d,e...))
# print((a+b+c+d+e+...-max(a,b,c,d,e...)-min(a,b,c,d,e....))/X)
根据之前的经验就显然把自己搞崩溃了,直接把这个问题转变成背英文字母表了
1、借助循环实现录入
暂定还是5个评委
a=*5
print("请输入5位评委对选手的打分(0~100分):")
for i in range(0,5):
a = int(input("请输入第%d位评委的打分:" %(i+1)))
print(a)
2、通过排序和切片筛选数据
不再用眼睛去筛选数据
a = *5
print("请输入5位评委对选手的打分(0~100分):")
for i in range(0,5):
a = int(input("请输入第%d位评委的打分:" %(i+1)))
a.sort() #对列表排序
print("最高分",a)
print("最低分",a)
print("最终得分",(a+a+a)/3)
3、真正实现多人(随机)评分
x=int(input('输入评委人数:'))
a=*x
print("请依次输入",x,"位评委对选手的打分(0~100分):")
for i in range(x):
a = int(input("请输入第%d位评委的打分:" %(i+1)))
a.sort() #对列表排序
b=sum(a)
print("最高分",a)
print("最低分",a)
print("最终得分",(b-a-a)/(x-2))
核心解决分数计算时的索引用法
三、精进探讨
问题:如果在初始选择了20个评委,在评分过程中由于突发事件5位评委离场,在不退出程序的情况下还能继续计算最终成绩应如何修改
思路:利用while循环设置选项,如果在输入成绩时录入“Q”则结束录入,将之前的数据进行计算。 一卷狂梦天地飞 发表于 2021-4-6 11:44
请问输完第一个评委分数要按回车吗,这样之后就不运行代码内容了
是的,一开始代码有问题,是因为创建列表为空,而后面都是需要修改列表内容,所以报错,已经更新了内容,将初始列表内容根据评委数变更为多个0项,就能修改了 平淡最真 发表于 2021-4-6 11:47
人数可以不定义吧,直接a=[]
然后一个一个加
一开始确实是这么想,但要修改人数时,还需要改代码里for循环的range,就显得麻烦了 嗯,厉害,我也想学pyrhon 学习了,大佬 我也要学,但是没有楼主这么有毅力 ****学了一个礼拜python 就放弃了 请问输完第一个评委分数要按回车吗,这样之后就不运行代码内容了 人数可以不定义吧,直接a=[]
然后一个一个加 还是这种递进的学习比较容易
页:
[1]
2