Python3学习笔记6:字符串操作、dict字典、文件file的合理使用----购物车优化之用户端(消费者端)

学习Python3,坚持每一次学习都有一点点知识的积累,瞄准目标gogogo!这次仍然是练习,字符串操作、dict字典的合理使用,增加了文件的读和写,使用了一些稍微复杂的逻辑(题目仍然源自老男孩)

购物车程序,消费者入口:

   1.商品信息存在文件里

  2.已购商品,余额记录

先上代码

#Author wsp
#用户程序,要求如下:
    # 1.商品信息存在文件里
    # 2.已购商品,余额记录
print("这里是个人购物系统".center(70, "#"))
#读取用户信息,余额、已购商品列表

while True:
    #只读方式打开文件
    goods_file_r = open("user.txt", "r")
    lines = goods_file_r.readlines()
    #使用list存储读取出来的用户信息
    user_info = []
    for line in lines:
        user_info.append(line)
    if user_info.__len__() > 0:
        # 得到用户剩余金额
        salary = int(user_info[0])
        # 去掉第一行,得到用户购买商品信息
        del user_info[0]
    else:
        #用户还没有记录,先输入金额
        salary = int(input("目前没有您的记录,请输入您的初始金额:"))
    #打印相关信息
    print("您现在余额是{salary}".format(salary=salary))
    print("您当前已购商品及金额列表如下:")
    for goods in user_info:
        print(goods.strip())

    #只读方式打开商品列表文件
    goods_file_r = open("goods.txt", "r")
    lines = goods_file_r.readlines()
    #涉及到去重,使用字典
    goods_list = {}
    print("当前商品列表如下:")
    for line in lines:
        goods_line = line.split(" ")
        if goods_line.__len__() == 2:
            goods_list[goods_line[0].strip()] = goods_line[1].strip()
            print("{name} {cost}".format(name=goods_line[0].strip(), cost=goods_line[1].strip()))
    #关闭文件句柄
    goods_file_r.close()
    choice_goods_name = input("商品信息显示完成,请选择想要购买的商品:,'q' 退出>>>:")
    if goods_list.__contains__(choice_goods_name):
        if int(goods_list[choice_goods_name]) > salary:
            print("您的金额不足,只剩 {salary}元!".format(salary=salary))
        else:
            print("添加商品 {goods} 到您的商品列表,并扣款成功 ".format(goods=choice_goods_name))
            user_info.append(choice_goods_name+" "+goods_list[choice_goods_name])
            salary = salary - int(goods_list[choice_goods_name])
            #写入文件中:
            # 写的方式打开文件
            goods_file_w = open("user.txt", "w")
            goods_file_w.writelines(str(salary))
            goods_file_w.write('\n')
            for input_goods in user_info:
                goods_file_w.writelines(input_goods)
             # 关闭写文件句柄
            goods_file_w.close()
            continue;
    elif choice_goods_name=='q':
        break;
    else:
        print("您的输入不合法!")

要点

  1.读取文件和写入文件,我使用的不同的文件打开句柄,需要注意的是文件操作之后及时关闭

  2.使用了以前没有使用过的Str的center()方法,前后补充分隔符,算是黑白屏操作稍微好看点,也好玩一点

  3.使用str的strip()方法,去除掉回车符

  4.商品列表仍然使用字典,值得注意的是用户的购物信息使用list存储,因为用户有可能买两个相同的产品

 

练习暂时告一段落了,后面开始学习新的知识了,加油加油老铁们。
什么时候能够自己写爬虫爬点MM图片啥的呀,哈哈哈。

上一篇:MySQL 笔记(三):三大范式


下一篇:Mybatis进阶