8.11 学习笔记
#len//2 地板除,整除
# 3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
# name=['alex','wupeiqi','yuanhao','nezha']
# def func1(item):
# return item+'_sb'
# ret=map(func1,name)
# print(list(ret))
# 4.用filter函数处理数字列表,将列表中所有的偶数筛选出来
# num = [1,3,5,6,7,8]
# def func2(a):
# if a%2==0:
# return a
# s=filter(func2,num)
# print(list(s))
# 5.随意写一个20行以上的文件
# 运行程序,先将内容读到内存中,用列表存储。
# 接收用户输入页码,每页5条,仅输出当页的内容
'''
with open('心得 7.22.py',encoding='utf-8') as f:
s=int(input('page number:'))
d=f.readlines()
page,mod =divmod(len(d),5) #同时取余数和商时余数的变量名为mod
# page2=len(d)%5
print(page,mod)
if s<page:
for i in range(5):
print(d[(s-1)*5+i].strip())
elif s==page:
for i in range(mod):
print(d[s*5+i].strip())
else:print('输入有误')
'''
# with open('心得 7.22.py',encoding='utf-8') as f:
# l = f.readlines()
# page_num = int(input('请输入页码 : '))
# pages,mod = divmod(len(l),5) #求有多少页,有没有剩余的行数
# if mod: # 如果有剩余的行数,那么页数加一
# pages += 1 # 一共有多少页
# if page_num > pages or page_num <= 0: #用户输入的页数大于总数或者小于等于0
# print('输入有误')
# elif page_num == pages and mod !=0: #如果用户输入的页码是最后一页,且之前有过剩余行数
# for i in range(mod):
# print(l[(page_num-1)*5 +i].strip()) #只输出这一页上剩余的行
# else:
# for i in range(5):
# print(l[(page_num-1)*5 +i].strip()) #输出5行
#python:divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
#map(function, iterable, ...)
'''
# 6.如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格
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}
]
# 6.1.计算购买每支股票的总价 先定义一个计算值的函数,返回值为字典,以protfile为基点循环
ret=map(lambda dic:{dic['name']:round(dic['price']*dic['shares'],2)},portfolio)
lambda dic:{dic['name']:round(dic['price']*dic['shares'],2)}
print(list(ret))
# 6.2.用filter过滤出,单价大于100的股票有哪些
ret=filter(lambda dic: 1 if dic['price']>100 else 0 ,portfolio) #表达式语法if不加:先写1为if和之后的情形
print(list(ret)) #再else,之后内容为dic:后的值
ret=filter(lambda dic: dic['price']>100,portfolio) #判断条件一体化
print(list(ret))
####list(filter(lambda x:True if x % 3 == 0 else False, range(100)))
'''
#二分查找法
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
# def func1(list,seek):
# if seek>list[len(list)-1]:print('wrong number')
# return
# d=len(list)//2
# if list[d]>seek:
# print(len(list))
# func1(list[:d],seek)
# elif list[d]==seek:print('find! is %d'%(list[d]))
# elif list[d]<seek:
# print(len(list))
# func1(list[d:],seek)
# if len(list)==2:print('not found')
# func1(l,87) #有问题
'''
def func(list,seek,start=0,end=None):
end=len(list)
if seek > list[len(list) - 1]: print('wrong number')
return
mid_index= len(list) // 2+start
if seek>list[mid_index]:
start=mid_index
mid_index=(start+end)//2
func(list,seek)
elif seek>list[mid_index]:
end=mid_index
mid_index=(start+end)//2
func(list,seek)
elif seek==list[mid_index]:
print('find,%d,index:%d'%(list[start],start))
else:print('sd')
func(l,16)
'''
def func(list,seek,start=0,end=None):
end=len(list)
if seek > list[len(list) - 1]:return 'wrong number'
mid_index= len(list) // 2+start
if start>=end:
if seek>list[mid_index]:
return find(seek,start=list[mid_index]+1,end=end)
elif seek>list[mid_index]:
return find(seek,start=start,end=list[mid_index]-1)
elif seek==list[mid_index]:
return 'find,%d,index:%d'%(list[start],start)
else:return 'sd'
else:
return 'find2,%d,index:%d'%(list[start],mid_index)
ret=func(l,55)
print(ret)
不用羡慕他人,只管静心钻研这一刻!