8.6 每日课后作业之递归调用番外篇(迭代器)

# 今日作业:
# 1.简述
# 什么是迭代器
# 1、 迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来 仅仅循环,不是迭代
# 什么是可迭代对象
# 在python中,但凡内置有__iter__方法的对象,都是可迭代的对象
# 什么是面向过程编程
# 核心是'过程'二字,过程即解决问题的步骤,即先干什么,再干什么。。。。
# 基于面向过程编写程序就好比在设计一条流水线,是一种机械式的思维方式。

# 2.自定义生成器 实现 range功能
# def my_range(start,stop,step=1):
# while start < stop:
# yield start#yield 4
# start+=step #
# abc=my_range(1,5,1)
# print(next(abc))
# print(next(abc))
# print(next(abc))
# 3、文件shopping.txt内容如下
# mac,2000,3
# lenovo,3000,10
# tesla,1000000,10
# chicken,200,1
#
# with open(r'shopping.txt','w',encoding='utf-8') as f:
# f.writelines(['mac,2000,3\n',
# 'lenovo,3000,10\n',
# 'tesla,1000000,10\n',
# 'chicken,200,1\n'])

# # 求总共花了多少钱?
# with open(r'shopping.txt','r',encoding='utf-8') as f:
# info=[line.strip('\n').split(',') for line in f]
# res=sum(int(i[1])*int(i[2]) for i in info)
# print(res)
# 打印出所有的商品信息,格式为
# [{'name':'xxx','price':'3333','count':3},....]
# l=[]
# with open(r'shopping.txt','r',encoding='utf-8') as f:
# for line in f:
# dic={}
# info=line.strip('\n').split(',')
# dic['name'] = info[0]
# dic['price'] = info[1]
# dic['count'] = info[2]
# l.append(dic)
# print(l)
# 求单价大于10000的商品信息,格式同上


# with open(r'shopping.txt',encoding='utf-8') as f:
# info=[{
# 'name': line.strip('\n').split(',')[0],
# 'price': float(line.strip('\n').split(',')[1]),
# 'count': int(line.strip('\n').split(',')[2]) }
# for line in f if float(line.strip('\n').split(',')[1] )> 10000]
# print(info)
# 4、文件内容如下,标题为:姓名,性别,年纪,薪资
# egon male 18 3000
# alex male 38 30000
# wupeiqi female 28 20000
# yuanhao female 28 10000
#
# with open(r'salary.txt','w',encoding='utf-8') as f:
# f.writelines(['egon male 18 3000\n',
# 'alex male 38 30000\n',
# 'wupeiqi female 28 20000\n',
# 'yuanhao female 28 10000\n'])
# # 要求:
# # 从文件中取出每一条记录放入列表中,列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式
l=[]
with open(r'salary.txt','r',encoding='utf-8') as f:
for line in f:
dic={}
info=line.split()
dic['name'] = info[0]
dic['sex'] = info[1]
dic['age'] = info[2]
dic['salary'] = info[3]
l.append(dic)
print(l)

# # 5 根据1得到的列表,取出薪资最高的人的信息
# print(max(l,key=lambda dic:dic['salary']))
# # 6 根据1得到的列表,取出最年轻的人的信息
# print(min(l,key=lambda dic:dic['age']))
# # 7 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
# l1=[]
# with open(r'salary.txt','r',encoding='utf-8') as f:
# for line in f:
# dic1={}
# info=line.strip('\n').split(' ')
# dic1['name'] = info[0].capitalize()
# dic1['sex'] = info[1]
# dic1['age'] = info[2]
# dic1['salary'] = info[3]
# l1.append(dic1)
# print(list(l1))
# 8 根据1得到的列表,过滤掉名字以a开头的人的信息
g=filter(lambda item:item['name'].startswith('a'),l)

print(list(g))
l.remove({'name': 'alex', 'sex': 'male', 'age': '38', 'salary': '30000'})
# l.pop(1)
print(l)
posted on 2018-08-11 11:01  2Maike  阅读(120)  评论(0编辑  收藏  举报