光头小淘七 发表于 2022-11-15 17:42:04

简洁程序

输入一个正整数n (n>4),再输入n个实数,求出歌手的得分(保留2位小数)。设一歌唱评奖晚会上有n(n>4)个评委为歌手打分.评分规则:每个评委依次打分,再去掉2个最高分和2个最低分,计算余下的分数平均值为歌手的得分.

输入格式:
在第一行中输入n
在第二行中输入n个分数

输出格式:
在一行中输出平均分数
输入样例:
在这里给出一组输入。例如:

10
10 10 9 9 9 8 8 8 7 7
输出样例:
在这里给出相应的输出。例如:

aver=8.50
n=int(input())
b=0
a=[]
if n>4:
    n1=input().split()
    for i in n1:
      i=int(i)
      a.append(i)
      a=sorted(a)
    for j in range(1,3):
      a.pop(0)
      a.pop(-1)
    for k in a:
      b+=k
c=b/(n-4)
print("aver={:.2f}".format(c))
感觉程序有点麻烦了,能帮忙简化一下吗

jackz007 发表于 2022-11-15 18:04:02

本帖最后由 jackz007 于 2022-11-15 18:13 编辑

n = int(input())
d = list(map(int , input() . split()))
d . sort()
ave = sum(d) / len(d)
print('%.2f' % ave)

tommyyu 发表于 2022-11-15 18:07:58

n = int(input())
# 题目中已经说了 n>4,这代表输入的数据一定会 >4,此处就不用判断 n>4 了
a = input().split() # split 函数可以按照某一字符串分割字符串,默认按空格分隔
                  # 比如 '1 2 3'.split() 的返回值就是 ['1', '2', '3']
a = # 利用列表推导式,将 a 中的字符串转化成整数
a.remove(min(a)); a.remove(min(a)); a.remove(max(a)); a.remove(max(a)) # 去除最大值和最小值
print("aver={:.2f}".format(sum(a) / len(a)))

dragov 发表于 2022-11-15 19:56:21


n=int(input("评委数(至少5人):"))
d=list(map(eval,input("分数:").split()))
if len(d) == n:
    d.sort()
    average=sum(d)/len(d)
    print(f"平均分数为{average:.2f}")
else:
    print("评委与分数的数量不符!")

dragov 发表于 2022-11-15 20:05:26

jackz007 发表于 2022-11-15 18:04



程序中,变量n未起作用!

jackz007 发表于 2022-11-15 20:11:53

dragov 发表于 2022-11-15 20:05
程序中,变量n未起作用!

      不需要这个 n,纯属多余。

dragov 发表于 2022-11-15 20:16:39

jackz007 发表于 2022-11-15 20:11
不需要这个 n,纯属多余。



哦哦

光头小淘七 发表于 2022-11-15 23:30:18

谢谢各位!{:5_101:}
页: [1]
查看完整版本: 简洁程序