• Python自学笔记9:实操案例六(千年虫,购物流程)


    Python自学笔记9:实操案例六(千年虫,购物流程)

    网课传送门:第155,156讲,https://www.bilibili.com/video/BV1Sw411Z779?p=155
    1.千年虫
    在这里插入图片描述

    人话:2000年以前,不写年份前两位没事,比如说1991,写个91啥事没有
    2000年这种,不写20,就会变成00,计算机整形一处理,0了
    所以现在身份证号都从15位变成了18位,包含完整的出生年月日
    在这里插入图片描述

    year=[82,89,88,86,85,00,99]
    print('原列表:',year)
    for index,value in enumerate(year):
        if str(value)!='0':
            year[index]=int('19'+str(value))#不是2000年这种年份的加上19的前缀补全
        else:
            year[index]=int('200'+str(value))#2000年这种年份用200补全
    #value转换为str之后,字符串拼接,再转换为int
    print('修改之后的列表为:',year)
    #列表排序
    year.sort()
    print('排序之后的列表为:',year)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    老师这个enumerate用的很巧,这样每个年份又能改变值value加上前缀,还能用index来放入循环遍历
    https://blog.csdn.net/qq_32252917/article/details/78174835
    在这里插入图片描述
    在这里插入图片描述
    还可以统计文件行数,具体可以看看这位码友的博文最后一部分,因为我这暂时用不到,就不细致研究了

    2.购物流程

    注意这个倒序输出要指定步长,不然会没有输出
    老师的单独实验,指定步长为-1:
    在这里插入图片描述
    不指定步长:
    在这里插入图片描述在这里插入图片描述

    lst=[]#商品清单
    for i in range(0,5):
        goods=input('请输入商品编号和商品名称进入商品的入库,每次只能输入一件商品:\n')
        lst.append(goods)
    for item in lst:
        print(item)
    
    cart=[]#购物车
    while True:
        num=input('请输入要购买的商品编号:')
        for item in lst:
            if item.find(num)!=-1:#没找到会返回-1
                cart.append(item)#找到了就加入购物车
                break;#添加完毕,退出break循环
        if num=='q':#退出while循环
            break
    
    print('您购物车里已经选好的商品为(正序输出):')
    for m in cart:
        print(m)
    
    #优化:最新选择的商品在最上面显示,所以要倒着遍历
    print('您购物车里已经选好的商品为(倒序输出):')
    for i in range(len(cart)-1,-1,-1): #因为到不了-1,所以最后要写-1
        #需要告知每次步长是多少,不然无法输出
        print(cart[i])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    代码可以的升级方向:
    每次入库输入很麻烦,可以封装成一个函数,然后利用文件读写存储,再从磁盘文件种加载进来购买,类似于模拟数据库的一个过程。
    我这给出一份自己改的参考代码,应该是实现了商品清单写入文件和读取,本人也是初学菜狗一枚,如果代码有谬误还请多多指教:
    在这里插入图片描述
    在这里插入图片描述
    创建的读写文件在这:
    在这里插入图片描述
    创建的读写文件在这:
    在这里插入图片描述
    在文件目录里打开如下:
    在这里插入图片描述
    在Pycharm里面打开会发现好像有一些小问题,别着急,后面我们解决
    在这里插入图片描述

    另外,file.write(goods+‘\n’)的\n不能去掉,否则会发生下面的事情:
    在这里插入图片描述

    
    def CreateShoppingListToFile():
        with open('ShoppingList.txt', 'w') as file:
            lst = []#商品清单
            for i in range(0, 5):
                goods = input('请输入商品编号和商品名称进入商品的入库,每次只能输入一件商品:\n')
                lst.append(goods)
                file.write(goods + "\n")
            for item in lst:
                print(item)
    
    shoppingList=[]
    def ReadShoppingListFromFile():
        with open('ShoppingList.txt', 'r') as file:
            for item in file:
                shoppingList.append(item)
    
    def PrintFileShoppingList():
        print('现有商品列表为:')
        for item in shoppingList:
            print(item)
    
    cart=[]#购物车
    def AddShoppingList():
        while True:
            num=input('请输入要购买的商品编号:')
            for item in shoppingList:
                if item.find(num)!=-1:#没找到会返回-1
                    cart.append(item)#找到了就加入购物车
                    break;#添加完毕,退出break循环
            if num=='q':#退出while循环
                break
    
    def PrintShoppingList():
        print('您购物车里已经选好的商品为(正序输出):')
        for m in cart:
             print(m)
    
    def PrintShoppingListInOrder():
        #优化:最新选择的商品在最上面显示,所以要倒着遍历
        print('您购物车里已经选好的商品为(倒序输出):')
        for i in range(len(cart)-1,-1,-1): #因为到不了-1,所以最后要写-1
            #需要告知每次步长是多少,不然无法输出
            print(cart[i])
    
    #按逻辑顺序先后调用:
    CreateShoppingListToFile()#输入商品信息,创建文件并且写入
    ReadShoppingListFromFile()#把文件里面的商品信息读进来
    PrintFileShoppingList()#打印读入的商品清单看是否正确
    AddShoppingList()#添加需要的商品到购物清单
    PrintShoppingList()#正序打印购物清单
    PrintShoppingListInOrder()#倒序打印购物清单
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    至于那个shoppingList在Pycharm里面打开报红色标乱码:python打开文件时提示“File was loaded in the wrong encoding:’UTF-8”
    https://www.cnblogs.com/alphabetical/p/14117391.html
    在这里插入图片描述
    (下面的结果是去掉\n之后的bug结果,不用管他,看上面就行,已经不报错了)
    在这里插入图片描述
    操作步骤:
    在这里插入图片描述
    在这里插入图片描述
    如果一不小心把这个删了,没关系,点一下这个reset就回来了(鼠标滑过才会出现reset)
    在这里插入图片描述

  • 相关阅读:
    slam资料汇总
    C语言,从联合看字节序
    【UE5 虚幻引擎】新建C++类:类的类型 命名 类的目标模块
    获取http三种请求的方式,get,post,流的形式
    js中Promise的常见用法 比如resolve、race都是啥意思
    Guava Cache介绍
    S3E:用于协作SLAM的大规模多模态数据集
    (八) 共享模型之管程【活跃性】
    QT源码拾贝0-5(qimage和qpainter)
    力扣218.天际线问题 线段树解法
  • 原文地址:https://blog.csdn.net/bailichen800/article/details/124975301