鱼C论坛

 找回密码
 立即注册
查看: 6320|回复: 67

[技术交流] Python:每日一题 219

[复制链接]
发表于 2018-12-12 17:08:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冬雪雪冬 于 2018-12-19 19:12 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
今天来一道简单的题目,很多主观性评分的比赛,是由多个裁判评分,最终去掉1个最高分,去掉1个最低分,取其它分数的平均值。
编写一个函数fun219,参数为3个以上的分数,按上述规则return返回平均分。
注,采用收集参数来接收不定个数的数值。
例如:
fun219(95, 33, 72, 88, 98, 45, 66, 72)
返回73.0

=================================================
希望大家能帮我想一些题目,具体的要求是:
1.难度适中
2.充分利用python的特性
3.最好是自己想出来的
如果有合适的题目,请给我发消息或直接发帖并@我对于出题的鱼油给予奖励。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-12 17:35:18 | 显示全部楼层
  1. def fun219(*parms):
  2.     l = []
  3.     for each in parms:
  4.         l.append(each)
  5.     return (sum(l)-max(l)-min(l))/(len(l) -2)

  6. if __name__ == '__main__':
  7.     print(fun219(95, 33, 72, 88, 98, 45, 66, 72))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 17:46:29 | 显示全部楼层
本帖最后由 塔利班 于 2018-12-12 17:48 编辑
  1. def fun219(*x):
  2.     if len(x)<3:
  3.         print('请输入3个以上数据')
  4.     else:
  5.         return round(sum(sorted(x)[1:-1])/(len(x)-2),1)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 18:22:37 | 显示全部楼层
  1. def fun219(*args):
  2.         result = list()
  3.         avg = 0
  4.         for i in args:
  5.                 result.append(i)
  6.         result.remove(max(result))
  7.         result.remove(min(result))
  8.         for i in result:
  9.                 avg += i/len(result)
  10.         return avg


  11. if __name__ == '__main__':
  12.         print(fun219(95, 33, 72, 88, 98, 45, 66, 72))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 18:39:55 | 显示全部楼层
  1. def fun219(*args):
  2.     return print((sum(args)-max(args)-min(args))/(len(args)-2))
  3. fun219(95, 33, 72, 88, 98, 45, 66, 72)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 19:24:57 | 显示全部楼层
  1. def fun219(*scores):
  2.     max_index = max(range(len(scores)), key=scores.__getitem__)
  3.     min_index = min(range(len(scores)), key=scores.__getitem__)
  4.     return sum([scores[i] for i in filter(lambda x:False if x == max_index or \
  5.                                           x == min_index else True,\
  6.                                           range(len(scores)))]) / (len(scores)-2)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 19:27:48 | 显示全部楼层
  1. def fun219(*scores):
  2.     if len(scores < 3):
  3.         return 0
  4.     max_index = max(range(len(scores)), key=scores.__getitem__)
  5.     min_index = min(range(len(scores)), key=scores.__getitem__)
  6.     return sum([scores[i] for i in filter(lambda x:False if x == max_index or \
  7.                                           x == min_index else True,\
  8.                                           range(len(scores)))]) / (len(scores)-2)
复制代码

没仔细读题

点评

if len(scores < 3):错误  发表于 2018-12-19 19:16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 19:56:39 | 显示全部楼层
def fun219(a):
    del a[a.index(min(a))]
    del a[a.index(max(a))]

    print("平均分为:",'%.2f'%(sum(a)/len(a)))

fun219([95, 33, 72, 88, 98, 45, 66, 72])
fun219([45,46,36,78,90])

点评

要求输入补丁数量参数,不是一个列表  发表于 2018-12-19 19:16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 20:14:28 | 显示全部楼层
  1. def func219(*param):
  2.     return round(sum(sorted(param)[ 1:-1 ]) / (len(param) - 2), 1)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 21:59:52 | 显示全部楼层
  1. def fun219(*num):
  2.    sum_num = 0
  3.    for i in range(len(num)):
  4.       sum_num += num[i]
  5.    sum_num = sum_num - min(num) - max(num)
  6.    return sum_num/(len(num) - 2)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 23:26:38 | 显示全部楼层
  1. def fun219(*scores):
  2.         scores=list(scores)
  3.         scores.remove(max(scores))
  4.         scores.remove(min(scores))
  5.         return sum(scores)/len(scores)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 23:37:09 | 显示全部楼层
  1. def fun219(*arg):
  2.     print((sum(arg)-max(arg)-min(arg))/(len(arg)-2))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 00:59:19 | 显示全部楼层
  1. def fun219(*n):
  2.     k=list(n)
  3.     k.remove(max(n))
  4.     k.remove(min(n))
  5.     return sum(k)/len(k)
  6. print(fun219(95, 33, 72, 88, 98, 45, 66, 72))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 08:43:05 | 显示全部楼层
  1. import numpy
  2. def fun219(*args):
  3.     list1 = [x for x in args]
  4.     list1.remove(max(list1))
  5.     list1.remove(min(list1))
  6.     return numpy.mean(list1)

  7. print(fun219(95, 33, 72, 88, 98, 45, 66, 72))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 09:02:26 | 显示全部楼层
  1. def func219(*args):
  2.     if len(args)>=3:
  3.         list_1 = list(args)
  4.         a = min(list_1)
  5.         b = max(list_1)
  6.         list_1.remove(a)
  7.         list_1.remove(b)
  8.         sum = 0
  9.         for i in list_1:
  10.             sum =sum + i

  11.         return  sum/len(list_1)
  12.     else:
  13.         return '输入的参数少于三个!!'

  14. print(func219(90,34,4,56,43,12,34))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 10:00:16 | 显示全部楼层
  1. def fun219(*param):
  2.     return (sum(param) - max(param) - min(param))/(len(param)-2)


  3. print(fun219(95, 33, 72, 88, 98, 45, 66, 72))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 10:01:41 | 显示全部楼层
list=[95, 33, 72, 88, 98, 45, 66, 72]
def fun219(list):
    sum=0
    list.remove(min(list))
    list.remove(max(list))
    for x in list:
        sum+=x
    return sum/len(list)

print(fun219(list))

点评

要求输入可变数量的参数  发表于 2018-12-19 19:20
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 10:21:16 | 显示全部楼层
#从键盘获取数值,并存入数组
a = []
while True:
    a_list = input("请输入分数,按q结束:")
   
    if a_list != 'q':
        a.append(a_list)
    else:
        break

#求平均值
def fun219(a):
    a1 = a2 = a[0]
    summ = 0
    count = 0
    for i in a:
        if i > a1:
            a1 = i
        if i < a2:
            a2 = i

    for j in a:
        if j !=a1:
            if j != a2:
                summ += int(j)
                count += 1

    av = summ / count
    return av

点评

用字符串比大小有误  发表于 2018-12-19 19:24
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 10:26:51 | 显示全部楼层
  1. def fun219(*nums):
  2.     return sum(sorted(nums)[1:-1])/(len(nums) - 2) if len(nums) > 2 else None


  3. print(fun219(95, 33, 72, 88, 98, 45, 66, 72))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 10:27:37 | 显示全部楼层
  1. def fun219(*args):
  2.     print("初始为:",end='')
  3.     print(args)
  4.     print("按降序排序后为:", end='')
  5.     max_sort=sorted(args,reverse=True)
  6.     print(max_sort)
  7.     max_sort.pop(0)
  8.     max_sort.pop(-1)
  9.     print("去掉最大值和最小值后为:", end='')
  10.     print(max_sort)
  11.     sum=0
  12.     avg=0
  13.     for i in  max_sort:
  14.         sum=sum+i
  15.     avg=sum/len(max_sort)
  16.     print("平均值为:"+str(avg))
  17. fun219(95, 33, 72, 88, 98, 45, 66, 72)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 00:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表