要求:
1.基本符合日常购物车的要求(根据你的想法开放性提升功能)
2.展示商品信息,并且可随时上新商品
3.用户购买每一样商品时都对所剩的钱做一次对比,如果够则提示“已购买”,如果不够提示“余额不足”
4.最后结账的时候,打印出一共买了那些商品,以及用了多少钱,剩余多少钱
5.用户购买商品时,尽量多给一些提示用语,方便提示用户
分析:
1.这个没什么可说的,大家都购过物,根据平时的经验来实现功能即可
2.商品信息需要手动添加,用的数据类型是什么,根据你的习惯用字典,还是列表,还是元组
我希望你已经思考过怎么解决这个问题再看的下面:
同样的,相关文件和代码已发布到GitHub,后期优化也会继续发到github上,地址:传送门
代码:
#!usr/bin/env python #-*- coding:utf-8 -*- # author:yangva # datetime:2017/12/5 0005 18:00 from collections import Counter import copy # 商品可以随时上新,也可用另一个文本文档存储 shop_dict = {'1':{'iphoneX':6000},'2':{'MAC':9000},'3':{'coffee':50},'4':{'pythonbook':80},'5':{'CD':20}} myshop_cart = [] #购物车 print('欢迎来到XXX购物平台!\n您看上哪个商品,输入商品对应的【id】即可购买,如果购物结束输入【quit】即可退出') for i,m in shop_dict.items(): for j,k in m.items(): print('商品id:%s\t商品名:%s\t\t商品单价:%s'%(i,j,k)) salary = int(input('请输入您的透支额度:')) temp = salary #作为缓存总额,用于后面总共消费多少作计算 while True: for i,m in shop_dict.items(): for j,k in m.items(): print('商品id:%s\t商品名:%s\t\t商品单价:%s'%(i,j,k)) shopping = input('请输入商品id(退出请输入“quit”)>>>:') if shopping in shop_dict.keys(): if salary < list(shop_dict[shopping].values())[0]: print('您的余额不足') else: salary -= list(shop_dict[shopping].values())[0] myshop_cart.append(list(shop_dict[shopping].keys())[0]) #把商品添加至购物车 print('您已购买商品【%s】,剩余余额:%s\n'%(list(shop_dict[shopping].keys())[0],salary)) if not salary: print('您的余额为0,不能再购买任何东西,程序已退出,欢迎下次光临') break elif shopping == 'quit': #购买结束,到收银台结账 print('您一共购买了以下商品:') for i,j in dict(Counter(myshop_cart)).items(): print('商品名:%s\t数量:%s'%(i,j)) print('您总共消费了%s元,可用余额为%s元'%(temp-salary,salary)) print('欢迎下次光临!') break else: print('您的输入有误,请查看是否有id为【%s】的商品'%shopping)
操作环境随你,windows还是ubuntu上都可以
效果测试:
(部分截图,完整的自己去尝试吧)