博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python编写购物车程序优化-升级完整版
阅读量:5366 次
发布时间:2019-06-15

本文共 6578 字,大约阅读时间需要 21 分钟。

实现:

判断用户身份

(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_new100 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 continue111 else:112 f.close()113 res == False114 break115 else:116 print("输入错误!")117 continue118 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()) # 打印key124 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 continue140 else:141 f2.close()142 break143 else:144 print("输入错误!")145 continue146 else:147 print('\n', "已退出!".center(50, '-'))148 break149 else:150 print("输入错误!",'\n', "已退出!".center(50, '-'))

结语:

看起来长,但其实拆开,一个功能一个功能实现并不难。

要求的功能可以实现,但感觉方法太麻烦、代码不够简练、高效!

学习编程还是要自己多练习,敲的多了也就熟练了

这两天看看老师讲解,多学习。

2019年3月8日

转载于:https://www.cnblogs.com/David0207AlwaysHappy/p/10497274.html

你可能感兴趣的文章
面向对象的介绍与特性
查看>>
typing-python用于类型注解的库
查看>>
20189215 2018-2019-2 《密码与安全新技术专题》第13周作业
查看>>
第四周作业
查看>>
一、HTML基础
查看>>
蓝牙进阶之路 (002) - HC-05与HC-06的AT指令的区别(转)
查看>>
mysql的limit经典用法及优化
查看>>
C#后台程序与HTML页面中JS方法互调
查看>>
mysql 同一个表中 字段a 的值赋值到字段b
查看>>
linux系统可执行文件添加环境变量使其跨终端和目录执行
查看>>
antiSMASH数据库:微生物次生代谢物合成基因组簇查询和预测
查看>>
UNICODE与ANSI的区别
查看>>
nginx 配置实例
查看>>
Flutter - 创建底部导航栏
查看>>
ASP.NET MVC 教程-MVC简介
查看>>
SQL Server索引 - 聚集索引、非聚集索引、非聚集唯一索引 <第八篇>
查看>>
转载:详解SAP TPM解决方案在快速消费品行业中的应用
查看>>
Android OpenGL ES 开发(N): OpenGL ES 2.0 机型兼容问题整理
查看>>
项目中用到的技术及工具汇总(持续更新)
查看>>
【算法】各种排序算法测试代码
查看>>