16、现有两个元组((‘a‘),(‘b‘)),((‘c‘),(‘d‘)),请使用python中匿名函数生成列表[{‘a‘:‘c‘},{‘b‘:‘d‘}]
17、实现两个字典的相加,不同的key对应的值保留,相同的key对应的值相加后保留,如果是字符串就拼接
18、斐波那契数列1,2,3,5,8,13,21.....根据这样的规律,编程求出400万以内最大的斐波那契数,并求出他是第几个斐波那契数。
19、随意写一个20行以上的文件。运行程序,先将内容读到内存中,用列表存储。接收用户输入页码,每页5条,仅输出当前页的内容。
20、三级菜单
16、现有两个元组((‘a‘),(‘b‘)),((‘c‘),(‘d‘)),请使用python中匿名函数生成列表[{‘a‘:‘c‘},{‘b‘:‘d‘}]
t1 = ((‘a‘),(‘b‘))
t2 = ((‘c‘),(‘d‘))
#不使用lambda 列表推导式+zip
l = [{i:j} for i,j in zip(t1,t2)]
print(l) #[{‘a‘: ‘c‘}, {‘b‘: ‘d‘}]
#使用map+lambda +zip
res = list(map(lambda t:{t[0]:t[1]},zip(t1,t2)))
print(res)
17、
dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
要求:实现两个字典的相加,不同的key对应的值保留,相同的key对应的值相加后保留,如果是字符串就拼接
如上例得到结果为:dictc = {"a":1,"b":5,"c":3,"d":9,"e":7,"m":9,"f":"hello","k":"world"}
dic = {}
dicta = {‘a‘:1,‘b‘:2,‘c‘:3,‘d‘:4,‘f‘:‘hello‘}
dictb = {‘b‘:3,‘d‘:5,‘e‘:7,‘m‘:9,‘k‘:‘world‘}
for a in dicta:
if a in dictb:
dic[a] = dicta[a] + dictb[a]
else:
dic[a] = dicta[a]
for b in dictb:
if b not in dicta:
dic[b] = dictb[b]
print(dic)
#或者
dictc = dicta
for key in dictb:
if key in dictc:
dictc[key] = dictc[key]+dictb[key]
else:
dictc[key] = dictb[key]
print(dictc)
18、斐波那契数列1,2,3,5,8,13,21.....根据这样的规律,编程求出400万以内最大的斐波那契数,并求出他是第几个斐波那契数。
count = 2 #第几个数
a,b = 1,2 #起始两个数
while a+b < 4000000:
c = a+b
a = b
b = c
count += 1
print(c)
print(count)
19、随意写一个20行以上的文件。运行程序,先将内容读到内存中,用列表存储。
接收用户输入页码,每页5条,仅输出当前页的内容。
with open(‘file‘,encoding=‘utf-8‘) as f:
content = f.readlines()
page_num = input(‘请输入页码:‘).strip()
page_num = int(page_num)
pages,mod = divmod(len(content),5) #总页数,有没有剩余的行
if mod: #余数不为0(比如有21条)
pages += 1 #页码加1
if page_num>pages or page_num<1: #输入的页码必须小于总页数
print(‘输入有误‘)
elif page_num==pages and mod!=0: #输入的页码刚好是最后一页,且余数不为0
for i in range(mod): #每次读5条数据(不用切片,切片占内存)
print(content[(page_num - 1) * 5 + i].strip()) #(3-1)*5
else:
for i in range(5): #每次读5条数据
print(content[(page_num - 1) * 5 + i].strip()) #(2-1)*5 + 0,1,3,4
20、三级菜单
# 1、递归的方式
dic = {
‘北京‘: {
‘海淀‘: {
‘五道口‘: {
‘soho‘: {},
‘网易‘: {},
‘google‘: {}
},
‘中关村‘: {
‘爱奇艺‘: {},
‘汽车之家‘: {},
‘youku‘: {},
},
‘上地‘: {
‘百度‘: {},
},
},
‘昌平‘: {
‘沙河‘: {
‘老男孩‘: {},
‘北航‘: {},
},
‘天通苑‘: {},
‘回龙观‘: {},
},
‘朝阳‘: {},
‘东城‘: {},
},
‘上海‘: {
‘闵行‘: {
"人民广场": {
‘炸鸡店‘: {}
}
},
‘闸北‘: {
‘火车战‘: {
‘携程‘: {}
}
},
‘浦东‘: {},
},
‘山东‘: {},
}
def threeMenu(dic):
while True:
for k in dic:
print(k) #打印城市:北京 上海 山东
key = input(‘输入城市(b返回上一层,q退出):‘) #key=‘北京‘
if key==‘b‘ or key==‘q‘: #
return key
elif key in dic.keys() and dic[key]: #查询的key存在和dic[‘北京‘]有内容
ret = threeMenu(dic[key]) #调用一次函数dic = dic[‘北京‘]
if ret==‘q‘: #if ret=‘b‘,什么都不做,if结束,继续循环
return ‘q‘ #if ret=q,逐层返回上一次调用的函数,直到没有调用
elif (not dic.get(key)) or (not dic[key]): #key不存在或value为空
print(‘\033[31;1m查询的城市不存在或没有下级城市,请重新输入\033[0m‘)
continue #重新循环
threeMenu(dic)
#2、堆栈的方式
menu = {
‘北京‘: {
‘海淀‘: {
‘五道口‘: {
‘soho‘: {},
‘网易‘: {},
‘google‘: {}
},
‘中关村‘: {
‘爱奇艺‘: {},
‘汽车之家‘: {},
‘youku‘: {},
},
‘上地‘: {
‘百度‘: {},
},
},
‘昌平‘: {
‘沙河‘: {
‘老男孩‘: {},
‘北航‘: {},
},
‘天通苑‘: {},
‘回龙观‘: {},
},
‘朝阳‘: {},
‘东城‘: {},
},
‘上海‘: {
‘闵行‘: {
"人民广场": {
‘炸鸡店‘: {}
}
},
‘闸北‘: {
‘火车战‘: {
‘携程‘: {}
}
},
‘浦东‘: {},
},
‘山东‘: {},
}
l = [menu] #先有一个栈
while l: #如果l不为空
for key in l[-1]:
print(key) #展示城市列表
k = input(‘请输入城市【b 返回上一级,q 退出】:‘).strip()
if k in l[-1].keys() and l[-1][k]: #如果key存在或key的值不为空
l.append(l[-1][k]) #将这级城市加入字典
elif k==‘b‘: #b退出,删除这个key下面的所有
l.pop()
elif k==‘q‘:
break
else:
print(‘\033[31;1m查询的城市不存在或没有下级城市,请重新输入\033[0m‘)
continue
原文:https://www.cnblogs.com/chenhongl/p/10659006.html