购物车程序优化题目要求:

1. 用户退出时打印商品列表时,按以下格式

-------您购买的商品如下------

id    商品    数量    单价    总价

1      iPhone 2      5800     11400

2      coffee  1      30      30

...

总计价格: 11430元

--------end -------------

salary=int(input("please input your salary:"))      #输入薪资
product_list=[["iphone", 5888], #定义商品列表
["coffee",30],
["bike",299],
["vivo x9",2499],
["cake",40],
["book",99]]
product_cart={} #定义购物车字典
total_cost= 0 #定义总花销
while True: #循环打印可购买商品列表及退出提示
print("可购买的商品")
for number in range(len(product_list)):
product = product_list[number]
print(number,product)
print("q","quit") choice=input("输入你所选择的商品编号>>:").strip() #输入选择的商品编号或退出“q”
if choice.isdigit(): #判断输入的是否为整数
choice=int(choice)
if choice < len(product_list) and choice >= 0: #判断输入的数字是否商品编号范围内
product=product_list[choice] #定义要买的商品列表
if salary -product[1] >=0: #判断是否买的起
salary-=product[1] #买的起自动结算
print("将商品",product[0],"加入购物车,","你目前还有余额",salary,"元") #输出当前本次操作信息及余额 if product[0] in product_cart: #判断购买的商品是否在购物车里
product_cart[product[0]][1]+=1 #在购物车里,则商品对应的数量+1
else: #不在购物车里,则将商品信息,商品单价,数量加入购物车内
product_cart[product[0]]=[product[1],1]
print("目前你的购物车",product_cart)
else: #买不起则打印当前余额及差的金额。结束本次循环,重新开始循环,打印可购买商品列表及退出提示
print("你目前还有余额", salary, "元,", "还差", product[1] - salary, "元")
else: #输入的数字不在商品编号范围内,返回上一循环,打印可购买商品列表及退出提示
print("商品不存在!")
elif choice== "q": #输入的不是数字为字符串“q”,打印已购买商品信息及总花销
print("---------你购买的商品如下---------")
print("id","\t","商品","\t","数量","\t","单价","\t","总价")
id_counter=1 #定义购买车商品编号
for key in product_cart:
print(id_counter,"\t", #依序打印购物车商品编号,商品,数量,单价及总价
key,"\t",
product_cart[key][1],"\t\t",
product_cart[key][0],"\t",
product_cart[key][1]*product_cart[key][0])
id_counter+=1
total_cost+=product_cart[key][1]*product_cart[key][0] #定义总花销
print("总计价格为",total_cost)
print("------------end------------")
break #跳出循环 else: #输入的既不是整数,也不是字符串“q”,提示信息错误
print("你输入的是什么鬼?")

  

运行程序结果为:



python(4)- 简单练习:python实现购物车的优化的更多相关文章

  1. python实现简单的循环购物车小功能

    python实现简单的循环购物车小功能 # -*- coding: utf-8 -*- __author__ = 'hujianli' shopping = [ ("iphone6s&quo ...

  2. 简单的python购物车

                 这几天,一直在学python,跟着视频老师做了一个比较简单的python购物车,感觉不错,分享一下 products = [['Iphone8',6888],['MacPro ...

  3. Python 实现简单的 Web

    简单的学了下Python, 然后用Python实现简单的Web. 因为正在学习计算机网络,所以通过编程来加强自己对于Http协议和Web服务器的理解,也理解下如何实现Web服务请求.响应.错误处理以及 ...

  4. 用 python实现简单EXCEL数据统计

    任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_ ...

  5. python 实现简单排序

    今天偶得一本神奇的算法秘笈,据编辑说是一本easy and intresting 的书,所以我就开始翻开了. 书中作者用的是C语言,我最近正啃python 所以想着用python来解决作者的提问. 这 ...

  6. python开启简单webserver

    python开启简单webserver linux下面使用 python -m SimpleHTTPServer 8000 windows下面使用上面的命令会报错,Python.Exe: No Mod ...

  7. EditPlus开发Python的简单设置

    EditPlus是一个功能强大的编辑器,这里介绍用它来开发Python程序所需要的简单设置. 环境:win7 1.设置Python语法缩进: [1]工具-->设置用户自定义工具 [2]在分类面板 ...

  8. Windows下用python编写简单GUI程序的方法

    Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py #!C:\Python27\python.exe ...

  9. 利用vs2013简单初探Python

    最近无聊,某天无意在vs2013上发现了Python...... Python介绍:可以自己搜索一下. 接下来,准备工具: Win7搭建开发环境.需要准备Python.PTVS2013. 1.http ...

随机推荐

  1. Django创建并连接数据库(实现增删改查)--ORM框架雏形

    第一步:要先创建数据库(orm是不能创建数据库的) 第二步:settings里面指定连接到哪个数据库 DATABASES = { #默认使用的是sqlite3数据库 'default': { 'ENG ...

  2. tcpdump 进行抓包

    tcpdump 进行抓包是怎么回事? tcp抓包是怎么搞的?

  3. 设计模式(二十二)模板方法模式 Template

    泡茶?泡咖啡? 我们用泡茶和泡咖啡两种行为来引入这一设计模式. 思考一下“泡茶”的过程: 煮水 -> 用沸水泡茶叶 -> 把茶倒进杯子 -> 放点柠檬之类的佐料. 然后再看一下“泡咖 ...

  4. [USACO12MAR]花盆Flowerpot (单调队列,二分答案)

    题目链接 Solution 转化一下,就是个单调队列. 可以发现就是一段区间 \([L,R]\) 使得其高度的极差不小于 \(d\) ,同时满足 \(R-L\) 最小. 然后可以考虑二分然后再 \(O ...

  5. bzoj3997[TJOI2015]组合数学(求最长反链的dp)

    组合数学 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走 ...

  6. YY的GCD(bzoj 2820)

    Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...

  7. UML系列,使用UML实现GOF Design patterns,常用模式类图解读

    1.单例:Singleton, DirectedAssociation

  8. HDU 5046 Airport【DLX重复覆盖】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5046 题意: 给定n个城市的坐标,要在城市中建k个飞机场,使城市距离最近的飞机场的最长距离最小,求这 ...

  9. 洛谷—— P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    https://www.luogu.org/problemnew/show/P2880 题目背景 题目描述: 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序 ...

  10. CDOJ_327 BerOS file system

    原题地址:http://acm.uestc.edu.cn/#/problem/show/327 The new operating system BerOS has a nice feature. I ...