本帖最后由 se6cxpp 于 2021-4-6 11:28 编辑
这个案例有些老套,也是列表的综合练习,个人增加了一些难度
设计要求: 歌手大奖赛中,有5个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后,取其余3个分数的平均值位最终成绩。
知识点
列表索引
一、基础问题
1、解决评分录入
[Python] 纯文本查看 复制代码 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、计算最大值与最小值
[Python] 纯文本查看 复制代码 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、“暴力”计算结果
[Python] 纯文本查看 复制代码 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个评委
[Python] 纯文本查看 复制代码 # 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个评委
[Python] 纯文本查看 复制代码 a=[0]*5
print("请输入5位评委对选手的打分(0~100分):")
for i in range(0,5):
a[i] = int(input("请输入第%d位评委的打分:" %(i+1)))
print(a)
2、通过排序和切片筛选数据
不再用眼睛去筛选数据
[Python] 纯文本查看 复制代码 a = [0]*5
print("请输入5位评委对选手的打分(0~100分):")
for i in range(0,5):
a[i] = int(input("请输入第%d位评委的打分:" %(i+1)))
a.sort() # 对列表排序
print("最高分",a[4])
print("最低分",a[0])
print("最终得分",(a[1]+a[2]+a[3])/3)
3、真正实现多人(随机)评分
[Python] 纯文本查看 复制代码 x=int(input('输入评委人数:'))
a=[0]*x
print("请依次输入",x,"位评委对选手的打分(0~100分):")
for i in range(x):
a[i] = int(input("请输入第%d位评委的打分:" %(i+1)))
a.sort() # 对列表排序
b=sum(a)
print("最高分",a[x-1])
print("最低分",a[0])
print("最终得分",(b-a[0]-a[x-1])/(x-2))
核心解决分数计算时的索引用法
三、精进探讨
问题:如果在初始选择了20个评委,在评分过程中由于突发事件5位评委离场,在不退出程序的情况下还能继续计算最终成绩应如何修改
思路:利用while循环设置选项,如果在输入成绩时录入“Q”则结束录入,将之前的数据进行计算。 |