标签:效率 user fun 迭代 bin dex 大小 嵌套 strip
# 1.看代码分析结果
# 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
# 2.看代码分析结果
# 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
# 3.看代码分析结果
# 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
# # 6
# # 8
# # 10
# # 12
# # 14
# # 16
# # 18
# 4.看代码写结果(面试题):
# def func(name):
# v = lambda x:x+name
# return v
#
# v1 = func(‘太白‘)
# v2 = func(‘alex‘)
# v3 = v1(‘银角‘)
# v4 = v2(‘金角‘)
# print(v1,v2,v3,v4)
# # <function func.<locals>.<lambda> at 0x02EDECD8>
# # <function func.<locals>.<lambda> at 0x02EDEF18>
# # 银角太白
# # 金角alex
# 5.看代码写结果【面试题】
# result = []
# for i in range(10):
# func = lambda : i # 注意:函数不执行,内部代码不会执行。
# result.append(func)
#
# print(i)
# print(result)
# v1 = result[0]()
# v2 = result[9]()
# print(v1,v2)
# # 9
# # [10个地址]
# # 9 9
# 6.看代码分析结果【面试题】
# def func(num):
# def inner():
# print(num)
# return inner
#
# result = []
# for i in range(10):
# f = func(i)
# result.append(f)
#
# print(i)
# print(result)
# v1 = result[0]()
# v2 = result[9]()
# print(v1,v2)
# # 9
# # [十个地址]
# # 0
# # 9
# # None None
# 7.看代码写结果【新浪微博面试题】
#
# 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 209
# 8.请编写一个函数实现将IP地址转换成一个整数。【面试题,较难,可以先做其他题】
#
# 如 10.3.9.12 转换规则为二进制:
# 10 00001010
# 3 00000011
# 9 00001001
# 12 00001100
# s1 = ‘10.3.9.12‘
# l1 = s1.split(‘.‘)
# # print(l1)
# s = ‘‘
# for i in l1:
# i = str(bin(int(i)))
# i = i[2:]
# i = ‘0‘*(8 - (len(i)) ) + i
# s += i + ‘\t‘
# print(s)
# 再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
# s1 = ‘00001010 00000011 00001001 00001100‘
# 9.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
# name = [‘oldboy‘,‘alex‘,‘wusir‘]
# ret = map(lambda x:x+‘_sb‘,name)
# print(list(ret))
# print([n+‘_sb‘for n in name])
# print(list(map(lambda x:x+‘_sb‘,name)))
# 10.用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾
# l = [{‘name‘:‘alex‘},{‘name‘:‘y‘}]
# ret = map(lambda x:x[‘name‘] + ‘_sb‘,l)
# print(list(ret))
# print(list(map(lambda x:x[‘name‘]+‘sb‘,l)))
# 11.用filter来处理,得到股票价格大于20的股票名字
#
# shares={
# ‘IBM‘:36.6,
# ‘Lenovo‘:23.2,
# ‘oldboy‘:21.2,
# ‘ocean‘:10.2,
# }
# ret = filter(lambda x:x[1]>20,shares.items())
# for i in ret:
# print(i[0])
# 12.有下面字典,得到购买每只股票的总价格,并放在一个迭代器中结果: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}]
# ret = map(lambda x:x[‘shares‘] * x[‘price‘],portfolio)
# print(list(ret))
# 13.用filter过滤出单价大于100的股票。
# 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}]
# ret = filter(lambda x:x[‘price‘] < 100,portfolio)
# print(list(ret))
# 14.有下列三种数据类型,
#
# l1 = [1,2,3,4,5,6]
# l2 = [‘oldboy‘,‘alex‘,‘wusir‘,‘太白‘,‘日天‘]
# tu = (‘**‘,‘***‘,‘****‘,‘*******‘)
# 写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个。)
# [(3, ‘wusir‘, ‘****‘), (4, ‘太白‘, ‘*******‘)]这样的数据。
# li = []
# obj = zip(l1,l2,tu)
# for i in obj:
# if i[0] > 2 and len(i[2]) >= 4:
# li.append(i)
# print(li)
# print(list(filter(lambda x: x[0] > 2 and len(x[2]) >= 4, zip(l1,l2,tu))))
# 15.有如下数据类型(实战题):
#
# 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大小进行排序,形成一个新的列表。
# l2 = sorted(l1,key=lambda x:x[‘sales_volumn‘])
# print(l2)
# print(sorted(l1,key=lambda x:x[‘sales_volumn‘]))
# print(sorted(l1,key=lambda x:x[‘sales_volumn‘],reverse=True))
# 16.求结果(面试题)
# v = [lambda :x for x in range(10)]
#
# print(v)
# print(v[0])
# print(v[0]())
# [10个地址]
# 一个地址
# 9
# [function 113,function 154561,....个]
# [function 113]
# 9
# 17.求结果(面试题)
# v = (lambda :x for x in range(10))
#
# print(v)
# print(v[0])
# print(v[0]())
# print(next(v))
# print(next(v)())
# 生成器地址
# 报错
# 报错
# 第一个lambda的地址
# 1
# 18.map(str,[1,2,3,4,5,6,7,8,9])输出是什么? (面试题)
# map(str,[1,2,3,4,5,6,7,8,9])
# print(map(str,[1,2,3,4,5,6,7,8,9])) # <map object at 0x0340DE70>
# print(list(map(str,[1,2,3,4,5,6,7,8,9]))) # [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘]
# 19.求结果:(面试题,比较难,先做其他题)
#
# def num():
# return [lambda x:i*x for i in range(4)]
# print([m(2)for m in num()])
# 20.有一个数组[34,1,2,5,6,6,5,4,3,3]请写一个函数,找出该数组中没有重复的数
# 的总和(上面数据的么有重复的总和为1+2=3)(面试题)
# l1 = [34,1,2,5,6,6,5,4,3,3]
# list
# 21.写一个函数完成三次登陆功能:
#
# 用户的用户名密码从一个文件register中取出。
#
# register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行。
#
# 完成三次验证,三次验证不成功则登录失败,登录失败返回False。
#
# 登陆成功返回True。
def get_user_pwd():
user_dict = {}
with open(‘register‘, encoding=‘utf-8‘) as f:
for line in f:
line_list = line.strip().split(‘|‘)
user_dict[line_list[0].strip()] = line_list[1].strip()
return user_dict
def login():
u_dict = get_user_pwd()
count = 1
while count < 4:
username = input(‘请输入用户名:‘).strip()
password = input(‘请输入密码:‘).strip()
if username in u_dict and password == u_dict[username]:
print(‘登录成功‘)
return True
else:
print(‘用户名密码错误。请重新登录‘)
count += 1
return False
login()
# 装饰器:装饰,装修
# 增加新的功能
# 开放封闭原则:
# 开放:对代码的拓展封闭。
# 封闭:对源码的修改是封闭的。
# 装饰器:完全遵循开放封闭原则。
# 装饰器:在不改变原函数的代码以及调用方式的前提下,为其增加新的功能。
# 版本一:写一些代码测试一下index函数的执行效率。
# def index():
# ‘‘‘有很多代码.....‘‘‘
# time.sleep(2)
# print(‘欢迎登陆博客园首页‘)
#
# def dariy():
# ‘‘‘有很多代码.....‘‘‘
# time.sleep(2)
# print(‘欢迎登陆博客园日记页面‘)
import time
# print(time.time()) # 格林威治时间。
# print(111)
# time.sleep(2)
# print(222)
# start_time = time.time()
# index()
# end_time = time.time()
# print(end_time-start_time)
# start_time = time.time()
# dariy()
# end_time = time.time()
# print(end_time-start_time)
# 版本一问题:如果测试别人的代码,必须重新赋值粘贴。
# 版本二:利用函数,解决代码重复使用的问题
# import time
# def index():
# ‘‘‘有很多代码.....‘‘‘
# time.sleep(2)
# print(‘欢迎登陆博客园首页‘)
#
# def dariy():
# ‘‘‘有很多代码.....‘‘‘
# time.sleep(2)
# print(‘欢迎登陆博客园日记页面‘)
#
#
# def timmer(f):
# start_time = time.time()
# f()
# end_time = time.time()
# print(end_time - start_time)
#
# timmer(index)
# 版本二的问题:原来index函数源码没有变化,给原函数添加了一个新的功能测试原函数的执行效率
# 原函数的调用方式改变了
# 版本三:不能改变原函数的调用方式
import time
def index():
‘‘‘有很多代码.....‘‘‘
time.sleep(2)
print(‘欢迎登陆博客园首页‘)
def timmer(f):
def inner():
start_time = time.time()
f() # index()
end_time = time.time()
print(end_time - start_time)
return inner
# timmer(index) ----> index()
# ret = timmer(index) # inner
# ret() # inner()
index = timmer(index)
index()
# def func():
# print(‘in func‘)
#
# def func1():
# print(‘in func1‘)
#
# func()
# func = 666
# func()
标签:效率 user fun 迭代 bin dex 大小 嵌套 strip
原文地址:https://www.cnblogs.com/szheng/p/13159912.html