鱼C论坛

 找回密码
 立即注册
查看: 7199|回复: 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 | 显示全部楼层
def fun219(*parms):
    l = []
    for each in parms:
        l.append(each)
    return (sum(l)-max(l)-min(l))/(len(l) -2)

if __name__ == '__main__':
    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 编辑
def fun219(*x):
    if len(x)<3:
        print('请输入3个以上数据')
    else:
        return round(sum(sorted(x)[1:-1])/(len(x)-2),1)

评分

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

查看全部评分

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

使用道具 举报

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


if __name__ == '__main__':
        print(fun219(95, 33, 72, 88, 98, 45, 66, 72))

评分

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

查看全部评分

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

使用道具 举报

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

评分

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

查看全部评分

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

使用道具 举报

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

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-12-12 19:27:48 | 显示全部楼层
def fun219(*scores):
    if len(scores < 3):
        return 0
    max_index = max(range(len(scores)), key=scores.__getitem__)
    min_index = min(range(len(scores)), key=scores.__getitem__)
    return sum([scores[i] for i in filter(lambda x:False if x == max_index or \
                                          x == min_index else True,\
                                          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 | 显示全部楼层
def func219(*param):
    return round(sum(sorted(param)[ 1:-1 ]) / (len(param) - 2), 1)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-12-12 21:59:52 | 显示全部楼层
def fun219(*num):
   sum_num = 0
   for i in range(len(num)):
      sum_num += num[i]
   sum_num = sum_num - min(num) - max(num)
   return sum_num/(len(num) - 2)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-12-12 23:26:38 | 显示全部楼层
def fun219(*scores):
        scores=list(scores)
        scores.remove(max(scores))
        scores.remove(min(scores))
        return sum(scores)/len(scores)

评分

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

查看全部评分

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

使用道具 举报

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

评分

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

查看全部评分

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

使用道具 举报

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

评分

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

查看全部评分

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

使用道具 举报

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

print(fun219(95, 33, 72, 88, 98, 45, 66, 72))

评分

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

查看全部评分

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

使用道具 举报

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

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

print(func219(90,34,4,56,43,12,34))

评分

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

查看全部评分

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

使用道具 举报

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


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 | 显示全部楼层
def fun219(*nums):
    return sum(sorted(nums)[1:-1])/(len(nums) - 2) if len(nums) > 2 else None


print(fun219(95, 33, 72, 88, 98, 45, 66, 72))

评分

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

查看全部评分

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

使用道具 举报

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

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 13:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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