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