今天主要记录代码,至于分析讲解,以后补充吧。
a={"001":{"name":"张三",'age':18,"sex":"男"},
"002": {"name": "李四", 'age': 28, "sex": "女"},
"003": {"name": "王五", 'age': 17, "sex": "男"},
"004": {"name": "赵六", 'age': 15, "sex": "女"},
}
b=[]
for i,j in a.items():
if j['age']==28:
b.append(i) #循环时无法删除参与循环的字典、列表、元祖,所以我想到的方式是追加至列表
for i in b:
del a[i]
print(a)
for i in a.keys():
if a[i]['age']<18:
a[i]['baby']='小孩'
a[i].pop('sex')
print(a)
第五天的作业
# 练习传递参数
# 1、写一个函数实现斐波那契数列(1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377......)
# 要求:接收一个参数,返回一个存着等量值的列表
print("练习传递参数")
def fbnq(a,b,n):
if n>=0:
print(b,end=' ')
a, b = b, a + b
return fbnq(a,b,n-1)
else:
return b
fbnq(1,1,13)
# 练习可变参数 *args
print("\n练习可变参数 *args")
args=[1,2,3]
def sed(a,b,c):
c1=a+b+c
return c1
c2=sed(*args)
print(c2)
# 2.计算任意多个数字的和
# 需求
# (1).定义一个函数 sum_numbers,可以接收的 任意多个整数
# (2).功能要求:将传递的 所有数字累加 并且返回累加结果
# 遍历 args 元组顺序求和
print("# 2.计算任意多个数字的和")
def sum_numbers(*args1):
num=0
for i in args1:
num=num+i
return num
args=tuple()
while True:
a=float(input("请输入相加的参数"))
args = args + (a,)
b=input("参数是否已经输入完成(1.是 2.否)?")
if b=='1':
break
x=sum_numbers(*args)
print(args,"相加的结果为",x)
# 递归函数练习
# 3.使用递归,计算 1 + 2 + ... num 的结果
print("# 3.使用递归,计算 1 + 2 + ... num 的结果")
def sum_01(num,sd):
sd=num+sd
if num!=0:
return sum_01(num-1,sd)
else:
return sd
aS=int(input("请输入累加的最终项"))
x=sum_01(aS,sd=0)
print("累加的结果为",x)
# 1. 出口
# 2. 数字的累加 num + (1...num -1)
# 假设 sum_numbers 能够正确的处理 1...num - 1
# 两个数字的相加
函数的默认传参以及可变传参
def kb(a,*b,c=4,**d):
print(a,b,c,d)
kb(1,2,3,4)
kb(1,2,3,{'q':2})
def kb1(**b1):
print(b1)
x=2
y={'A':1}
kb1(a="23")
全局变量
a=5
def sun1():
return 5+a
a=6
def sun2():
return 5+a
a=7
def sun3():
return 5+a
#a为全局变量,可以被函数使用
print(sun1())
print(sun2())
print(sun3())
关键字传参
def jiafa(a,b):
c=a+b
return c
print(jiafa(b=2,a=1))
print(jiafa(10,20))
# print(jiafa(a=1,7)) 关键字传参,关键字必须是最后一个,否则会报错
print(jiafa(1,b=13))
def dengji(name,age,sex='男'):
print(name,age,sex)
dengji('张三',18)
dengji('李四',17,'女')
dengji('aa',12,sex='qq')
# def dfgh(name,age,sex='男',address):
# print(name,age,sex,address)
def dfgh(name,age,address,sex='男'):
print(name,age,sex,address)
dfgh('张三',18,'山东')
可变传参
def aaa(a,b,*c): #*c 元祖形参
print(a)
print(b)
print(type(c))
for i in c:
print(i,end=' ')
aaa(1,2,'4',3,5,'q')
# def bbb(a,b,c):
# print(a)
# print(b)
# print(c)
x=(1,2,3)
# bbb(*x)
# print(type(*x))
print(*x) #变量前加*,可以打散变量的序列
a=[1,2,3,4]
print(*a)
a={1,2,3,4,5}
print(*a)
a={'a':1,'b':2}
print(*a)
# print(a[*a]) #无法解析
def zd2(**a):
print(a)
zd2(a=1,b=3,c=4,r=11)
def zd(a1,**a):
print(a1)
print(a)
zd(a1=23,a=1,b=2,c=3)
def fff(name,age):
print("fff")
print(name)
print(age)
a={'name':'awds','age':14}
fff(**a) #字典的k名必须与函数的参数名一致,单星号传key(键),双星号传values(值)
def jiajian(a,b):
c1=a+b
c2=a-b
c3=a*b
c4=a/b
return c1,c2,c3,c4
x1,x2,x3,x4=jiajian(5,6)
print(x1,x2,x3,x4)
x=jiajian(3,4) #将返回的多个值以元祖的方式给x
print(x,type(x))
u=1,2,3,4,5
print(u,type(u))
x=4
y=9
x,y=y,x #等价于 x,y=(y,x) 即将等式右侧的y,x组成一个元祖,然后按顺序分别赋值
print(x,y)
def hanshu1(a,b):
c=a+b
return c
def hanshu2(a,b,c):
return a-b,hanshu1(a,b)*c
d1=hanshu2(1,2,3)
print(d1)