1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数。

apple 10 3

tesla 100000 1

mac 3000 2

lenovo 30000 3

chicken 10 3

通过代码,将其构建成这种数据类型:

[{'name':'apple','price':10,'amount':3},

{'name':'tesla','price':1000000,'amount':1}......] 并计算出总价钱。

答:

  1. li = []
  2. with open('a.txt', encoding='utf-8', mode='r') as f1:
  3. for i in f1:
  4. l2 = i.strip().split()
  5. dic = {'name':l2[0], 'price':l2[1], 'amount':l2[2]}
  6. li.append(dic)
  7. print(li)
  8. sum = 0
  9. for j in li:
  10. sum = sum + int(j['price']) * int(j['amount'])
  11. print(sum)
  12. 优化扩展代码如下:
  13. name_list = ['name', 'price', 'amount']
  14. li = []
  15. with open('a.txt', encoding='utf-8', mode='r') as f1:
  16. for i in f1:
  17. l2 = i.strip().split()
  18. # dic = {}
  19. # for j in range(len(l2)):
  20. # dic[name_list[j]] = l2[j]
  21. dic = dict(zip(name_list, l2)) # 前面三句可以优化成这一句,易读性也更强
  22. li.append(dic)
  23. print(li)
  24. sum = 0
  25. for k in li:
  26. sum = sum + int(k['price']) * int(k['amount'])
  27. print(sum)

2,有如下文件:

  1. -------
  2. alex是老男孩python发起人,创建人。
  3. alex其实是人妖。
  4. 谁说alexsb
  5. 你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。
  6. ----------

将文件中所有的alex都替换成大写的SB。

  1. import os
  2. with open('alex.txt', encoding='utf-8', mode='r') as f1,\
  3. open('SB.txt', encoding='utf-8', mode='w') as f2:
  4. for i in f1:
  5. print(i)
  6. new_i = i.replace('alex', 'SB')
  7. f2.write(new_i)
  8. os.remove('alex.txt')
  9. os.rename('SB.txt', 'alex.txt')

3. 文件a1.txt内容:

  1. 文件内容:
  2. name:apple price:10 amount:3 year:2012
  3. name:tesla price:100000 amount:1 year:2013
  4. 通过代码,将其构建成这种数据类型:
  5. [{'name':'apple','price':10,'amount':3},
  6. {'name':'tesla','price':1000000,'amount':1}......]
  7. # 直接通过a模式创建题目所需要的a1文件
  8. # with open('a1.txt', encoding='utf-8', mode='a') as f1:
  9. # f1.write('name:apple price:10 amount:3 year:2012\n')
  10. # f1.write('name:tesla price:100000 amount:1 year:2013')
  11. # 接下来的解题代码如下:
  12. lis = []
  13. dic = {}
  14. with open('a1.txt', encoding='utf-8', mode='r') as f2:
  15. for i in f2:
  16. # 第一次大循环按行转换成列表
  17. li = i.strip().split()
  18. for j in li:
  19. # 小循环里面通过分割':'得到一对键值对
  20. KeyVal = j.split(':')
  21. # 分别赋值给初始的空字典,完成小循环添加完毕
  22. dic.setdefault(KeyVal[0], KeyVal[1])
  23. # 第一行大循环时增添第一行对应的dic字典
  24. lis.append(dic)
  25. # 关键来了,再把字典给清空再进行第二行的大循环,不然小循环里会增添不上。
  26. dic = {}
  27. print(lis)

4,文件a2.txt内容:

文件内容:

序号 部门 人数 平均年龄 备注

1 python 30 26 单身狗

2 Linux 26 30 没对象

3 运营部 20 24 女生多

通过代码,将其构建成这种数据类型:

[{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},

......]

  1. li = []
  2. with open('a2.txt', encoding='utf-8', mode='r') as f1:
  3. key = f1.readline().strip().split()
  4. # 先读取第一行作为key键的列表元素
  5. # 此时光标己移到第2行开头,再进行后面同样是充当键值的行循环就简单多了
  6. print(key)
  7. for i in f1:
  8. print(i)
  9. val = i.strip().split()
  10. # 以key为基准,循环i次去进行zip函数两个列表合并成字典的操作就简单了
  11. dic = dict(zip(key, val))
  12. li.append(dic)
  13. print(li)
  14. 每一步print出来的效果如下,可以更直观看到:
  15. ['序号', '部门', '人数', '平均年龄', '备注']
  16. 1 python 30 26 单身狗
  17. 2 Linux 26 30 没对象
  18. 3 运营部 20 24 女生多
  19. [{'平均年龄': '26', '备注': '单身狗', '部门': 'python', '人数': '30', '序号': '1'},
  20. {'平均年龄': '30', '备注': '没对象', '部门': 'Linux', '人数': '26', '序号': '2'},
  21. {'平均年龄': '24', '备注': '女生多', '部门': '运营部', '人数': '20', '序号': '3'}]

5,明日默写:就是第二题的代码(课上讲过)。

铁乐学Python_day08作业的更多相关文章

  1. 铁乐学Python_day12_作业

    1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组 例如:[('红心',2),('草花',2), -('黑桃','A')] def poker(): suit = ['红心', '梅花', ...

  2. 铁乐学python_day10_作业

    1.继续整理函数相关知识点,写博客. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def sum_n(*args): sum = 0 for i in args: sum += i r ...

  3. 铁乐学python_day09_作业

    练习题 1.整理函数相关知识点,写博客 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素, 并将其作为新列表返回给调用者. def odd_index(l): lis = [] for ...

  4. 铁乐学python_Day44_IO多路复用

    目录 IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) IO ...

  5. 铁乐学python_Day43_协程

    铁乐学python_Day43_协程 引子 之前我们学习了线程.进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位. 按道理来说我们已经算是把cpu的利用率提高很多了. ...

  6. 铁乐学python_Day42_线程池

    铁乐学python_Day42_线程池 concurrent.futures 异步调用模块 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor: ...

  7. 铁乐学python_Day42_线程-信号量事件条件

    铁乐学python_Day42_线程-信号量事件条件 线程中的信号量 同进程的一样,Semaphore管理一个内置的计数器, 每当调用acquire()时内置计数器-1:调用release() 时内置 ...

  8. 铁乐学python_Day42_锁和队列

    铁乐学python_Day42_锁和队列 例:多个线程抢占资源的情况 from threading import Thread import time def work(): global n tem ...

  9. 铁乐学python_Day39_多进程和multiprocess模块2

    铁乐学python_Day39_多进程和multiprocess模块2 锁 -- multiprocess.Lock (进程同步) 之前我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发 ...

随机推荐

  1. UIKit 框架之UITableView二

    // // ViewController.m // UITableView // // Created by City--Online on 15/5/21. // Copyright (c) 201 ...

  2. [转] Linux Crontab 定时任务 命令详解

    一.  Crontab 介绍 crontab命令的功能是在一定的时间间隔调度一些命令的执行. 1.1 /etc/crontab 文件 在/etc目录下有一个crontab文件,这里存放有系统运行的一些 ...

  3. 使用ms owin 搭建oauth2 server

    http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server 有示例代码 关于token的 ...

  4. unity 中的协程

    //The coroutine will continue after all Update functionshave been calledon the next frame. ; //Conti ...

  5. 郭霖 - MVVM开源项目学习

    https://blog.csdn.net/guolin_blog/article/details/87900605 https://medium.com/androiddevelopers/view ...

  6. Intellij IDEA run coverage之覆盖率测试

    Intellij IDEA run coverage之覆盖率测试 idea 的coverage + 我们自己写的测试用例.最后看一下,我们要测的代码有没有测试到,这是一个不错的提高代码质量的方法. i ...

  7. HTML5 number类型文本框step属性的验证机制——张鑫旭

    我在下一盘很大的棋,本文只是其中的一个棋子. 需要提前知道的: 目前而言,对step雄起的浏览器为IE10+, Chrome以及Opera浏览器. 需要预先知道number类型input的一些基本知识 ...

  8. less之旅

    在遇到less之前,一直和css交往,当less出现在我码农生涯的时候,被她给深深地吸引.从此,less成了自己码农生活里面的一房,css退居二房!那么,less到底有什么魅力让我如此迷上她呢? le ...

  9. C# 压缩图片到指定宽度,假如图片小于指定宽度 判断图片大小是否大于指定大小(KB) 如果大于则压缩图片质量 宽高不变

    class Program { static void Main(string[] args) {//G:\zhyue\backup\projects\Test\ConsoleApplication1 ...

  10. 通过html导出PDF如何分页

    每页一个DIV,加上样式page-break-inside:avoid; 即可分页了 .pdfpage{page-break-inside:avoid;} <div class="pd ...