4月8日作业

1.遍历字典中的所有键值对

dic1={"name":"鸡哥","pratice time":"2.5","sport":"rap"}
print(dic1)
for k,v in dic1.items() :
    print(k,v)
    

2.设计一个回调函数的案例来验证回调函数这个语法,并用上lamda函数

add=lambda x,y :x+y
jian=lambda a,b :a-b

def fn(p,q,fun) :
    fun(p,q)
    print(fun(p,q))
fn(2,3,add)
fn(7,3,jian)

3.设计一个闭包函数的案例来验证闭包函数这个语法

def out():
   print("waibao")
    def inn() :
        print("bibao")
    return inn
tool=out()
tool()

4.不用集合去除列表中的重复元素

(1)

排序去重

b=[]
i=0
a=input('请输入你的号码\n').split()
a1=[int(a[i]) for i in range(len(a))]
a1.sort()               #排序,使重复元素相邻,便于后续操作
while(i<=len(a1)-1) :
    a=a1.count(a1[i])
    if a==1 :
        b.append(a1[i])
        i+=1     #后移一位
    else :
        b.append(a1[i])
        i=i+a     #后移重复个数位数
print(b)

(2)

for 循环去重

list1 = [1, 3, 9, 9]
list2 = []
for l1 in list1:
    if l1 not in list2:
        list2.append(l1)
print(list2)

5.用集合去除列表中重复的元素

a=input('请输入你的号码\n').split()
a1=[int(a[i]) for i in range(len(a))]
print(a1)
list2=list(set(a1))
print(list2)

6.分析这段程序的执行流程
def fun(n,o=None):
    print(n,o)
    def fn(m):
        return fun(m,n)
    return fn
a=fun(0)
a(1)
a(2)
a(3)
b=fun(0)(1)(2)(3)
c=fun(0)(1)
c(2)
c(30)

函数运行就会产生作用域,函数每次运行产生新的作用域,调用内部函数可以引用外包函数的变量,相互是独立的,函数在调用的时候,在哪个作用域访问到的函数,不会影响他运行代码和代码所在作用域

答:

先执行外包函数,打印所传元素值,0,none       a(1)在返回的函数fn()中执行,得到fun(1,0)得到打印结果1,0  返回fn() ,同理 ,a(2)在返回fn()中执行,得到fun(2,0)得到打印结果2,0     a(3)为 3,0     
fun(0)(1)(2)(3) 先打印0,none 调用fn函数,传值m=1,n取外包变量0,打印输出得到1,0,在返回f(n) ,m=2,在fun()找到n=1,返回fun(2,1),并执行打印fun(2,1), n=2,以此类推,m=3,返回fun(3,2)执行打印
c=fun(0)(1)  生成0 ,none   1,0  此时n=1
c(2)       执行fn()  执行fun(2,1)   输出是2,1
c(30)       执行fn()  执行fun(30,1)   输出是30,1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值