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日

posted @ 2019-03-08 17:47  David0207  阅读(419)  评论(0编辑  收藏  举报