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

项目场景:

基础练习题

问题描述:

提示:这里描述项目中遇到的问题:

编写一个函数cacluate, 可以接收任意多个数, 返回的是一个元组.元组的第一个值为所有参数的平均值(均值保留一位小数), 第二个值是大于平均值的所有值

求均值和大于均值的值(*args 与**args区别)_第1张图片


原因分析:

提示:这里填写问题的分析:
函数要想接收多个参数必然要使用可变参数类型----*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 result

args=[1,2,3,4,5,6]
a=sum(*args) #a的值为列表中所有值的和,该方法称为解包,即将列表中的元素依次传入函数中


def add(**kw):
	result=0
	for k,v in kw.items():
		result+=v
	return result

kws=["a":1,"b":2,"c":3,"d":4,"e":5,"f":6]
a=add(**kws) #字典也可以解包

#调用函数时add(**kws),加了*叫解包;创建函数时def add(**kw),加了*叫可变参数

2.将列表传入给形参:解包
在列表前加一个*即可

你可能感兴趣的