zoukankan      html  css  js  c++  java
  • 铁乐学Python_day08作业

    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}......] 并计算出总价钱。

    答:

    li = []
    with open('a.txt', encoding='utf-8', mode='r') as f1:
        for i in f1:
            l2 = i.strip().split()
            dic = {'name':l2[0], 'price':l2[1], 'amount':l2[2]}
            li.append(dic)
    print(li)
    sum = 0
    for j in li:
        sum = sum + int(j['price']) * int(j['amount'])
    print(sum)
    
    优化扩展代码如下:
    name_list = ['name', 'price', 'amount']
    li = []
    with open('a.txt', encoding='utf-8', mode='r') as f1:
        for i in f1:
            l2 = i.strip().split()
            # dic = {}
            # for j in range(len(l2)):
            #     dic[name_list[j]] = l2[j]
            dic = dict(zip(name_list, l2)) # 前面三句可以优化成这一句,易读性也更强
            li.append(dic)
    print(li)
    sum = 0
    for k in li:
        sum = sum + int(k['price']) * int(k['amount'])
    print(sum)
    

    2,有如下文件:

    -------
    alex是老男孩python发起人,创建人。
    alex其实是人妖。
    谁说alex是sb?
    你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。
    ----------
    

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

    import os
    with open('alex.txt', encoding='utf-8', mode='r') as f1,
        open('SB.txt', encoding='utf-8', mode='w') as f2:
        for i in f1:
            print(i)
            new_i = i.replace('alex', 'SB')
            f2.write(new_i)
    os.remove('alex.txt')
    os.rename('SB.txt', 'alex.txt')
    

    3. 文件a1.txt内容:

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

    4,文件a2.txt内容:

    文件内容:
    序号 部门 人数 平均年龄 备注
    1 python 30 26 单身狗
    2 Linux 26 30 没对象
    3 运营部 20 24 女生多
    通过代码,将其构建成这种数据类型:
    [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},
    ......]

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

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

  • 相关阅读:
    IOS-常用第三方开源框架介绍
    IOS-底层数据结构
    iOS UI-QQ聊天布局
    iOS UI-微博案例(通过代码自定义Cell)
    iOS UI-界面传值(三种方法)
    OC Block(代码块)
    一条进程的栈区、堆区、数据区和代码区在内存中的映射
    iOS UI-团购案例(通过xib文件自定义UITableViewCell)
    iOS UI-UIPickerView(拾取器)、UIWebView(网页视图)和传值方式
    Android 编程下模拟 HOME 键效果
  • 原文地址:https://www.cnblogs.com/tielemao/p/8666230.html
Copyright © 2011-2022 走看看