函数---名称空间和作用域(相关练习)

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))
posted @ 2018-12-11 19:08  Tank-Li  阅读(192)  评论(0编辑  收藏  举报