Python编写购物车程序优化-升级完整版
实现:
判断用户身份
(1)商家
商品信息存在文件“商品列表”里,可以增删改
(2)顾客
1.启动程序后,让用户输入工资,然后打印商品列表(与商家所用列表同步)
2.允许用户根据商品名称购买商品
3.用户选择商品后,监测余额是否够,够就直接扣款,不够就提醒
4.已购商品与余额保存至“购物清单”文件
文件存储格式(.txt):
苹** 62**
果* 1*
正文:
1 # Author:David Liu 2 # Be Happy! 3 import time 4 info={'1':'顾客','2':'商家'} 5 for i in info: 6 print(i,info[i]) 7 choice=input("请选择您的身份>>") 8 if choice=='1': 9 salary = int(input("请输入您的工资:")) 10 dict = {} 11 file = open('C:/Users/David/Desktop/实验文件/第一模块:python基础/商品列表.txt', 'r').readlines() 12 for i in file: 13 (key, value) = i.strip().split(' ') # 切片,再存入字典 14 dict.setdefault(key, value) 15 for i in file: 16 print(file.index(i) + 1, i.strip()) # 自动显示序号 17 buy = [] 18 money = [] 19 while True: 20 file2 = open('C:/Users/David/Desktop/实验文件/第一模块:python基础/购物清单.txt', 'a+') 21 goods = (input("请输入您想购买的商品名称:")) 22 if goods in dict: 23 if salary >= int(dict[goods]): 24 print(goods, "购买成功!") 25 26 salary = salary - int(dict[goods]) 27 buy.append(goods) 28 money.append(salary) 29 30 question = input("是否继续购买?y/n") 31 if question == 'y': 32 continue 33 else: 34 file2.write('\n') 35 file2.write((time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))).center(50,'-')) # 格式化输出当前日期和时间 36 file2.write('\n') 37 file2.write('已购商品:\n') 38 for i in buy: 39 file2.write('\t') 40 file2.write(i) 41 file2.write('\n') 42 file2.write('当前余额:\n') 43 file2.write('\t') 44 file2.write(str(salary) + '¥') 45 break 46 else: 47 print("您的余额不足,无法购买!") 48 question2 = input("是否继续购买其他商品?y/n") 49 if question2 == 'y': 50 continue 51 else: 52 break 53 else: 54 print("不存在该商品!") 55 print('\n', "已退出!".center(50, '-')) 56 elif choice=='2': 57 dict = {} 58 file = open('C:/Users/David/Desktop/实验文件/第一模块:python基础/商品列表.txt').readlines() 59 for i in file: 60 print(i.strip()) 61 res = True 62 while res: 63 que = input("是否作出修改>>(y/n)") 64 if que == 'y': 65 que2 = input("添加商品>>a,修改价格>>p,删除商品>>d") 66 if que2 == 'a': 67 while True: 68 name = input("输入商品名称>>") 69 price = input("输入商品价格>>") 70 f = open('C:/Users/David/Desktop/实验文件/第一模块:python基础/商品列表.txt', 'a') 71 f.write('\n') 72 f.write(name) 73 f.write(' ') 74 f.write(price) 75 print("添加成功!") 76 f.close() 77 f = open('C:/Users/David/Desktop/实验文件/第一模块:python基础/商品列表.txt','r') 78 for j in f.readlines(): 79 print(j.strip()) 80 a = input("是否继续添加>>(y/n)") 81 if a == 'y': 82 f.close() 83 continue 84 else: 85 f.close() 86 break 87 elif que2 == 'p': 88 f = open('C:/Users/David/Desktop/实验文件/第一模块:python基础/商品列表.txt', 'r') 89 for i in f.readlines(): 90 (key, value) = i.strip().split(' ') # 切片,再存入字典 91 dict.setdefault(key, value) 92 print(dict.keys()) # 打印key 93 while True: 94 f = open('C:/Users/David/Desktop/实验文件/第一模块:python基础/商品列表.txt', 'w') 95 goods = input("请输入商品名>>") 96 if goods in dict: 97 print("原价为:", dict.get(goods)) 98 price_new = input("输入更新价格>>") 99 dict[goods] = price_new 100 print("修改成功,信息更新!") 101 for key in dict: 102 print(key, dict[key]) 103 f.write(key) 104 f.write(' ') 105 f.write(dict[key]) 106 f.write('\n') 107 sig = input("是否继续修改>>(y/n)") 108 if sig == 'y': 109 f.close() 110 continue 111 else: 112 f.close() 113 res == False 114 break 115 else: 116 print("输入错误!") 117 continue 118 elif que2 == 'd': 119 f = open('C:/Users/David/Desktop/实验文件/第一模块:python基础/商品列表.txt', 'r+') 120 for i in f.readlines(): 121 (key, value) = i.strip().split(' ') # 切片,再存入字典 122 dict.setdefault(key, value) 123 print(dict.keys()) # 打印key 124 while True: 125 f2 = open('C:/Users/David/Desktop/实验文件/第一模块:python基础/商品列表.txt', 'w') 126 goods = input("请输入要删除的商品>>") 127 if goods in dict: 128 del dict[goods] 129 print("删除成功,信息更新!") 130 for key in dict: 131 print(key, dict[key]) 132 f2.write(key) 133 f2.write(' ') 134 f2.write(dict[key]) 135 f2.write('\n') 136 sig = input("是否继续删除>>(y/n)") 137 if sig == 'y': 138 f2.close() 139 continue 140 else: 141 f2.close() 142 break 143 else: 144 print("输入错误!") 145 continue 146 else: 147 print('\n', "已退出!".center(50, '-')) 148 break 149 else: 150 print("输入错误!",'\n', "已退出!".center(50, '-'))
结语:
看起来长,但其实拆开,一个功能一个功能实现并不难。
要求的功能可以实现,但感觉方法太麻烦、代码不够简练、高效!
学习编程还是要自己多练习,敲的多了也就熟练了
这两天看看老师讲解,多学习。
2019年3月8日