python之道13
- 看代码分析结果
func_list = []
for i in range(10):
func_list.append(lambda :i)
v1 = func_list[0]()
v2 = func_list[5]()
print(v1,v2) # 9 9 i的最终指向
- 看代码分析结果
func_list = []
for i in range(10):
func_list.append(lambda x:x+i)
v1 = func_list[0](2)
v2 = func_list[5](1)
print(v1,v2) # 11 10
- 看代码分析结果
func_list = []
for i in range(10):
func_list.append(lambda x:x+i)
for i in range(0,len(func_list)):
result = func_list[i](i)
print(result)
'''
0 2 4 ... ... 18
'''
- 看代码写结果(面试题):
def func(name):
v = lambda x:x+name
return v
v1 = func('太白') # lambda内存地址
v2 = func('alex') # lambda内存地址
v3 = v1('银角') # 银角太白
v4 = v2('金角') # 金角alex
print(v1,v2,v3,v4)
- 看代码写结果【面试题】
result = []
for i in range(10):
func = lambda : i # 注意:函数不执行,内部代码不会执行。
result.append(func)
print(i) # 9
print(result) # 列表中是10个元素,对应的lambda的内存地址
v1 = result[0]()
v2 = result[9]()
print(v1,v2) # 9 9
- 看代码分析结果【面试题】
def func(num):
def inner():
print(num)
return inner
result = []
for i in range(10):
f = func(i)
result.append(f)
print(i) # 9
print(result) # 返回一个列表,里面是是个inner函数的内存地址
v1 = result[0]() # 0
v2 = result[9]() # 9
# 闭包思想解决这个问题
print(v1,v2) # 由于inner函数没有返回值,所以为None,None
看代码写结果【新浪微博面试题】
def func():
for num in range(10):
pass
v4 = [lambda :num+10,lambda :num+100,lambda :num+100,]
result1 = v4[1]()
result2 = v4[2]()
print(result1,result2)
func() # 109 109
请编写一个函数实现将IP地址转换成一个整数。【面试题,较难,可以先做其他题】
如 10.3.9.12 转换规则为二进制:
10 00001010
3 00000011
9 00001001
12 00001100
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
# 方法一:
def ip(ip_addr):
ip_list = ip_addr.split('.')
num = ''
for i in ip_list:
i = int(i)
num = num + format(i,'08b')
return int(num,2)
ip('10.3.9.12') # 方法二:
def ip(ip_addr):
return int(''.join([format(int(i),'08b') for i in ip_addr.strip().split('.')]),2) print(ip('10.3.9.12'))都完成的做一下作业(下面题都是用内置函数或者和匿名函数结合做出):
- 用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
name=[‘oldboy’,'alex','wusir']
name=['oldboy','alex','wusir']
l = list(map(lambda x:x+'_sb',name))
print(l)
2. 用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾
l = [{'name':'alex'},{'name':'y'}]
l=[{'name':'alex'},{'name':'y'}]
print(list(map(lambda x:x['name']+'_sb',l)))
3. 用filter来处理,得到股票价格大于20的股票名字
shares={
'IBM':36.6,
'Lenovo':23.2,
'oldboy':21.2,
'ocean':10.2,
}
# print(list(filter(lambda x:shares[x] > 20,shares)))
4. 有下面字典,得到购买每只股票的总价格,并放在一个迭代器中结果:list一下[9110.0, 27161.0,......]
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}]
# print(list(map(lambda x:x['shares']*x['price'],portfolio)))
5. 还是上面的字典,用filter过滤出单价大于100的股票。
for i in filter(lambda x:x['price'] > 100, portfolio):
print(i)
6. 有下列三种数据类型,
l1 = [1,2,3,4,5,6]
l2 = ['oldboy','alex','wusir','太白','日天']
tu = ('','','','****')
写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个。)
[(3, 'wusir', ''), (4, '太白', '*******')]这样的数据。
for i in filter(lambda x:x[0] > 2 and len(x[2]) >= 4,zip(l1,l2,tu)):
print(i)
7. 有如下数据类型(**实战题**):
l1 = [ {'sales_volumn': 0},
{'sales_volumn': 108},
{'sales_volumn': 337},
{'sales_volumn': 475},
{'sales_volumn': 396},
{'sales_volumn': 172},
{'sales_volumn': 9},
{'sales_volumn': 58},
{'sales_volumn': 272},
{'sales_volumn': 456},
{'sales_volumn': 440},
{'sales_volumn': 239}]
将l1按照列表中的每个字典的values大小进行排序,形成一个新的列表。
print(sorted(l1,key=lambda x:x['sales_volumn']))
10. 求结果(**面试题**)
v = [lambda :x for x in range(10)]
print(v) # 返回一个列表里面有个10个lambda函数的内存地址
print(v[0]) # 一个lambda函数的内存地址
print(v0) # 9
11. 求结果(**面试题**)
v = (lambda :x for x in range(10))
print(v) # 内存地址
print(v[0]) # 报错
print(v0) # 报错
print(next(v)) # lambda内存地址
print(next(v)()) # 执行下一个lambda 返回1
12. map(str,[1,2,3,4,5,6,7,8,9])输出是什么? (**面试题**)
```
返回一个内存地址
```
13. 求结果:(**面试题,比较难,先做其他题**)
def num():
return [lambda x:i*x for i in range(4)]
print([m(2)for m in num()])
[6, 6, 6, 6]
14. 有一个数组[3,4,1,2,5,6,6,5,4,33]请写一个函数,找出该数组中没有重复的数
的总和(上面数据的么有重复的总和为1+2=3)(**面试题**)
def func(alist):
return sum([i for i in alist if alist.count(i) == 1])
print(func([3,4,1,2,5,6,6,5,4,3,3]))
15. 写一个函数完成三次登陆功能:
- 用户的用户名密码从一个文件register中取出。
- register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行。
- 完成三次验证,三次验证不成功则登录失败,登录失败返回False。
- 登陆成功返回True。
```
def get_dic_user_pwd():
with open('register', encoding='utf-8') as f1:
dic = {i.strip().split('|')[0]: i.strip().split('|')[1] for i in f1}
return dic
def login(dic_user_pwd):
i = 0
dic = dic_user_pwd()
while i < 3:
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
if username in dic and dic[username] == password:
print('登录成功')
return True
else:
print('用户名密码错误,请重新登录')
i += 1
login(get_dic_user_pwd)
```
16. 再写一个函数完成注册功能:
- 用户输入用户名密码注册。
- 注册时要验证(文件regsiter中)用户名是否存在,如果存在则让其重新输入用户名,如果不存在,则注册成功。
- 注册成功后,将注册成功的用户名,密码写入regsiter文件,并以 | 隔开。
- 注册成功后,返回True,否则返回False。
```
def get_dic_user_pwd():
with open('register', encoding='utf-8') as f1:
dic = {i.strip().split('|')[0]: i.strip().split('|')[1] for i in f1}
return dic
def register(dic_user_pwd):
dic = dic_user_pwd()
username = input('请输入您要注册的用户名:').strip()
password = input('请输入注册密码密码:').strip()
if username not in dic:
with open('register',encoding='utf-8',mode='a') as f1:
f1.write(f'\n{username}|{password}')
return True
return False
register(get_dic_user_pwd)
```
17. 用完成一个员工信息表的增删功能(**选做题,有时间做,没时间周末做**)。
文件存储格式如下:
id,name,age,phone,job
1,Alex,22,13651054608,IT
2,太白,23,13304320533,Tearcher
3,nezha,25,1333235322,IT
现在要让你实现两个功能:
第一个功能是实现给文件增加数据,用户通过输入姓名,年龄,电话,工作,给原文件增加数据(增加的数据默认追加到原数据最后一行的下一行),但id要实现自增(id自增有些难度,id是不需要用户输入的但是必须按照顺序增加)。
第二个功能是实现给原文件删除数据,用户只需输入id,则将原文件对应的这一条数据删除(删除后下面的id不变,比如此时你输入1,则将第一条数据删除,但是下面所有数据的id值不变及太白,nezha的 id不变)。
自己做!
python之道13的更多相关文章
- Python补充06 Python之道
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录 ...
- 彩蛋 Python之道
彩蛋 Python之道 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 使用下面的语句可以调出Python中的一个彩蛋, impo ...
- 【转】Python之道
作者:Vamei 出处:http://www.cnblogs.com/vamei Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录于PEP 20. 语句执行之后,终端 ...
- Python之道(一)之安装Python
"Python之道"首先介绍一下在windows系统下怎样安装Python开发环境. (1)下载MSI安装文件 进入网址www.python.org,点击Downloads进入下载 ...
- 一入python深似海--python之道
python社区不乏幽默.先来看"python之道"这首诗. 导入this包: import this 输出是一首诗,这首诗总结了Python的风格,能够指导Python程序猿的编 ...
- Python 30道高频面试题及详细解答
开学啦,开学啦!周末坐地铁的时候看到很多同学推着行李箱,拎着大包小包的穿梭在人群中,哎新的一学期又开始啦,同时也意味着很多同学要准备毕业啦,尤其是准大四,准研三的同学. 今年的招聘行情并不乐观,小公司 ...
- Python标准库13 循环器 (itertools)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的 ...
- 我的Python成长之路---第三天---Python基础(13)---2016年1月16日(雾霾)
五.Python的常用的内置函数 Python为我们准备了大量的内置函数,如下图所示 这里我们只讨论红框内的内置函数 abs(x) 返回一个数的绝对值(模),参数可以是真说或浮点数 >>& ...
- python几道简单的算法题
最近看了python的语法,但是总感觉不知道怎么使用它,还是先来敲敲一些简单的程序吧. 1.题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十 ...
随机推荐
- python split 与join
1.string.join (saq):以string 为分隔符,将seq中所有的元素(字符串表示"")合并成一个新的字符串 2.string.split(str="&q ...
- Codeforces Round #564 (Div. 2) A. Nauuo and Votes
链接:https://codeforces.com/contest/1173/problem/A 题意: Nauuo is a girl who loves writing comments. One ...
- BZOJ1057(单调栈 or 悬线法)
方法一 黑白棋盘拥有性质:(r + c) % 2的值决定颜色 因此把某色全部反转,直接求另一色的最大矩形即可,单调栈的经典问题 #include <cstdio> #include < ...
- 洛谷1373(dp)
常规线性dp,需要时就加一维.\(dp[i][j][t][s]\)表示在点\((i,j)\)时瓶子里剩\(t\)且为\(s\)走(0代表小a,1代表uim)时的方案数. de了半天发现是初次尝试的快速 ...
- 湖南大学新生赛C,G,J题解
C: 思路:做几组数据就基本能发现规律,奇数为-1,偶数为1 代码: #include<cstdio> #include<iostream> #include<cstri ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) D
Country of Metropolia is holding Olympiad of Metrpolises soon. It mean that all jury members of the ...
- 1.7hashmap并发成环
https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653192000&idx=1&sn=118cee6d1c67e7 ...
- 简单记录下SpringCloud的微服务架构和一些概念
一.微服务的注册与发现——Eureka 和许多分布式设计一样,分布式的应用一般都会有一个服务中心,用于记录各个机器的信息.微服务架构也一样,我们把一个大的应用解耦成这么多个那么多个服务,那么在想要调用 ...
- mongodb 分片技术
MongoDB Sharding Cluster 分片集群 规划:10个实例:38017-38026 (1)configserver:3台构成的复制集(1主两从,不支持arbiter)38018-38 ...
- 牛客网Java刷题知识点之什么是内部类、为什么要使用内部类、内部类如何使用外部类的属性和方法、成员内部类、局部内部类、静态内部类、匿名内部类
不多说,直接上干货! 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 内部类 ...