函数---名称空间和作用域(相关练习)
1)写函数,接受n个数字,求这些参数数字的和 (本题考点为:动态传参)
def func(*args): sum = 0 for el in args: sum+=el return sum print(func(1,5,6,9,8,4,5,7)) #打印的是返回值 结果为: 45
2)写函数,传入函数中多个实参(均为可迭代对象如字符串,列表,元祖,集合等),将每个实参的每个元素依次添加到函数的动态参数args里面.
例如 传入函数两个参数[1,2,3] (22,33)最终args为(1,2,3,22,33)
def func(*args): print(args) func(*[1,2,3],*(22,33)) #本题考点为动态的位置传参 输出结果为:(1, 2, 3, 22, 33) 写一个动态的关键字传参 def func(**kwargs): print(kwargs) func(**{"name":"李嘉诚","age":66}, **{"address":"香港九龙"}) 输出结果为: {'name': '李嘉诚', 'age': 66, 'address': '香港九龙'}
3)写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以’_’相连接,形成新的字符串,并返回.
例如 传入的可迭代对象为[1,'赛利亚','李sir']返回的结果为’1_赛利亚_李sir’
def func(lst): s = "" for el in lst: s+=str(el) + "_" #拼接和累加 return s[:-1] print(func([1,"胡辣汤","猪蹄子"]))
4)返回一个扑克牌列表,里面有52项,每一项是一个元组
例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)]
def func(): hua = ["红心","草花","方块","黑桃"] #花色 dian = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"] #笛卡尔积, 笛卡尔乘 -> 关系型数据库的原理 result = [] #循环花色 for h in hua: #h就是花色:红心 for d in dian: #d是每一个点数 result.append((h,d)) return result print(func())
5)写代码完成99乘法表.
for i in range(1,10): for j in range(1,i+1): print("%s x %s = %s" (i,j,i*j),end=" ") print()#换行
6)把传进去的实参添加至一个列表,将这个列表返回给调用者.
下面代码打印的结果分别是_________,________,________.
def extendList(val,list=[]): list.append(val) return list list1 = extendList(10) list2 = extendList(123,[]) list3 = extendList('a') print('list1=%s'%list1) print('list2=%s'%list2) print('list3=%s'%list3)
说明讲解:
def fn(val,list=[]): list.append(val) #将传进来的值添加到列表里,注意这个列表是函数的,所以,后面的人调用也是添加到里面,除非实参又给了一个新的列表 return list #返回这个列表给调用者 lst = fn(10) lst3 = fn ("a") print(id(lst3)) print(id(lst)) print(lst1) print(lst3)
7)有函数定义如下:
def calc(a,b,c,d=1,e=2): return (a+b)*(c-d)+e 请分别写出下列标号代码的输出结果,如果出错请写出Error。 print(calc(1,2,3,4,5))___2__ print(calc(1,2))_Error___ print(calc(e=4,c=5,a=2,b=3))__24_ print(calc(1,2,3))___8__ print(calc(1,2,3,e=4))_10___ print(calc(1,2,3,d=5,4))__Error___
8)写函数,传入一个参数n,返回n的阶乘
例如:cal(7) 计算7*6*5*4*3*2*1
def func(n): sum = 1 for i in range(n,0,-1): sum *= i return sum print(func(7))
9)写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值} 例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}(此题用到max(),min()内置函数)
def func(*args): #max()方法返回给定参数的最大值,参数可以为序列。min()方法返回给定参数的最小值,参数可以为序列 return {'max':max(args),'min':min(args)} print(func(1, 5, 7, 6, 5, 4, 2, 5, 8, 55, 4, 1, 2))