python|求均值和大于均值的值(*args 与**args区别)

项目场景: 基础练习题 问题描述: 提示:这里描述项目中遇到的问题:
编写一个函数cacluate, 可以接收任意多个数, 返回的是一个元组.元组的第一个值为所有参数的平均值(均值保留一位小数), 第二个值是大于平均值的所有值
python|求均值和大于均值的值(*args 与**args区别)
文章图片

原因分析: 提示:这里填写问题的分析:
函数要想接收多个参数必然要使用可变参数类型----*args

将从键盘读入的数据转为list后,想要将列表中的值传入函数形参
传入方法:解包

list = [...] 调用:fun(*list)

只需要在调用的时候,在list表前面加*即可
解决方案: 提示:这里填写该问题的具体解决方案:
代码:
num = list(map(int, input("Please input numbers,and press the Enter to end.(gap with ,)\n").split(','))) def cacluate(*args): average = sum(args) / len(args) list1 = [] for i in args: if i > average: list1.append(i) tuple1 = (average, list1) return tuple1 print(cacluate(*num))

知识点:
1.可变参数*args本质上说一个元组
def sum(*arg): result=0 for i in arg: result+=i return resultargs=[1,2,3,4,5,6] a=sum(*args) #a的值为列表中所有值的和,该方法称为解包,即将列表中的元素依次传入函数中def add(**kw): result=0 for k,v in kw.items(): result+=v return resultkws=["a":1,"b":2,"c":3,"d":4,"e":5,"f":6] a=add(**kws) #字典也可以解包#调用函数时add(**kws),加了*叫解包;创建函数时def add(**kw),加了*叫可变参数

【python|求均值和大于均值的值(*args 与**args区别)】2.将列表传入给形参:解包
在列表前加一个*即可

    推荐阅读