上次的学习又没有坚持下来,工作忙的不可开交,但我反思了一下还是自己没有下定决心好好学习,所以这次为期3个月的学习计划开始了,下面是这次学习后重新编写的购物车初版代码。

 1 # 功能要求:
2 # 要求用户输入总资产,例如:2000
3 # 显示商品列表,让用户选择商品,加入购物车
4 # 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
5 # 附加:可充值、某商品移除购物车
6 goods = [
7 {"name": "电脑", "price": 1999},
8 {"name": "鼠标", "price": 10},
9 {"name": "游艇", "price": 20},
10 {"name": "美女", "price": 998},
11 ]
12 zongxiaofei = 0
13 gouwuche = {}
14 zongzichan = int(input("欢迎来到小小商店,请输入您的总资产:"))
15 print("您的总资产为:", zongzichan, "\n商品名称、价格如下:")
16 for shangpin_list in goods:
17 print(shangpin_list["name"], shangpin_list["price"])
18 print("\n")
19 while True:
20 goumai = input("请输入'商品名称'加入购物车或者输入'y'或'Y'去购物车进行结算:")
21 if goumai.lower() == "y":
22 break
23 for shangpin_list2 in goods:
24 if shangpin_list2["name"] == goumai:
25 if shangpin_list2["name"] not in gouwuche.keys():
26 gouwuche[shangpin_list2["name"]] = {"num": 1, "jiage": shangpin_list2["price"]}
27 else:
28 gouwuche[shangpin_list2["name"]]["num"] = gouwuche[shangpin_list2["name"]]["num"] + 1
29 for jiesuan_key , jiesuan_values in gouwuche.items():
30 jiesuan_num = jiesuan_values["num"]
31 jiesuan_jiage = jiesuan_values["jiage"]
32 xiaofei = jiesuan_num * jiesuan_jiage
33 zongxiaofei = zongxiaofei + xiaofei
34 while True:
35 if zongxiaofei > zongzichan:
36 print("购买失败!")
37 print("您的总资产为:", zongzichan, "您总消费金额:", zongxiaofei, "超出金额:", zongxiaofei - zongzichan)
38 chongzhi = input("请输入'y'or'Y'前往充值或输入'n'or'N'回到购物车删除多余商品:")
39 while True:
40 if chongzhi.lower() == "y":
41 chongzhi_money = int(input("请输入充值金额:"))
42 zongzichan = zongzichan + chongzhi_money
43 print("充值成功,您的总资产为:", zongzichan, "\n")
44 break
45 if chongzhi.lower() == "n":
46 print("\n您购物车内消费商品名称、商品数量、商品单价如下:")
47 for jiesuan_key2, jiesuan_values2 in gouwuche.items():
48 print(jiesuan_key2, jiesuan_values2["num"], jiesuan_values2["jiage"])
49 shanchu = input("\n请输入商品名称来减少商品数量1:")
50 for jiesuan_key3 , jiesuan_values3 in gouwuche.items():
51 if jiesuan_key3 == shanchu:
52 if jiesuan_key3 in gouwuche.keys():
53 zongxiaofei = zongxiaofei - gouwuche[jiesuan_key3]["jiage"]
54 break
55 else:
56 print("购买成功!")
57 print("您的总资产为:", zongzichan, "您总消费金额:", zongxiaofei, "结余金额:", zongzichan - zongxiaofei)
58 exit()

这个版本是带充值、删除购物车商品,最后结算金额。

后面我会学习简化代码,编写另一版实时判断余额的。

python编写购物车的更多相关文章

  1. python编写购物车新写法

    用另一种方式完成购物车的功能实现 #!/usr/bin/python zijin = input("请输入资金:") if zijin.isdigit(): zijin = int ...

  2. python编写购物车小程序

     #练习#程序购物车#启动程序后,让用户输入工资,  然后打印商品列表,允许用户根据商品编号购买商品用户选择商品后 #检测余额是否够,够就直接扣款,不够就提醒可随时退出,退出时,打印已购买商品和余额  ...

  3. python编写购物车-实时购买

    本次编写的是实时购买(输入商品直接进行购买),余额不足可以进行充值或结束购物 1 goods = [ 2 {"name": "电脑", "price& ...

  4. python之编写购物车(第二天)

    作业: 编写购物车 具体实现了如下功能: 1.可购买的商品信息显示 2.显示购物车内的商品信息.数量.总金额 3.购物车内的商品数量进行增加.减少和商品的删除 4.用户余额的充值 5.用户购买完成进行 ...

  5. 基于python编写的天气抓取程序

    以前一直使用中国天气网的天气预报组件都挺好,可是自从他们升级组件后数据加载变得非常不稳定,因为JS的阻塞常常导致网站打开速度很慢.为了解决这个问题决定现学现用python编写一个抓取程序,每天定时抓取 ...

  6. 用Python编写博客导出工具

    用Python编写博客导出工具 罗朝辉 (http://kesalin.github.io/) CC 许可,转载请注明出处   写在前面的话 我在 github 上用 octopress 搭建了个人博 ...

  7. 【转载】Python编写简易木马程序

    转载来自: http://drops.wooyun.org/papers/4751?utm_source=tuicool 使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马. 首先准备好 ...

  8. 用Python编写的第一个回测程序

    用Python编写的第一个回测程序 2016-08-06 def savfig(figureObj, fn_prefix1='backtest8', fn_prefix2='_1_'): import ...

  9. [译]Python编写虚拟解释器

    使用Python编写虚拟机解释器 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环 ...

随机推荐

  1. Globally-Robust Neural Networks

    目录 概 主要内容 代码 Leino K., Wang Z. and Fredrikson M. Globally-robust neural networks. In International C ...

  2. SMOOTHING (LOWPASS) SPATIAL FILTERS

    目录 FILTERS Box Filter Kernels Lowpass Gaussian Filter Kernels Order-Statistic (Nonlinear) Filters Go ...

  3. 文件挂载(一)- Linux挂载Linux文件夹

    一.概述 工作中经常会出现不同服务器.不同操作系统之间文件夹互相挂载的情形,例如文件服务器或数据备份服务器. 挂载一般来说就是以下四种类型: 同类型操作系统 a. linux挂载linux文件夹 b. ...

  4. 浅谈JVM内存分配与垃圾回收

    大家好,我是微尘,最近又去翻了周志明老师的<深入理解Java虚拟机>这本书.已经看了很多遍了,每次都感觉似乎看懂了,但没过多久就忘了.这次翻了第三章的垃圾收集器与内存分配策略,感觉有了新的 ...

  5. docker学习:docker容器数据卷

    是什么 docker的理念 将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 容器之间希望有可能共享数据 docker容器产生的数据,如果不通过docker ...

  6. Laravel Redis分布式锁的使用

    创建锁 use Illuminate\Support\Facades\Cache; $lock = Cache::lock('foo', 10); if ($lock->get()) { // ...

  7. PHP-FPM 开启慢日志记录

    首先,找到 php-fpm 所在的目录: 使用 which php-fpm 使用 whereis php-fpm 然后找到 php-fpm.conf 所在的目录: 使用 ps -ef | grep p ...

  8. LCA/在线(倍增)离线(Tarjan)

    概念 祖先 公共祖先 最近公共祖先 方法1:暴力爬山法 方法2:倍增 求公共祖先 求俩点的距离 Tarjan 概念 祖先 有根树中,一个节点到根的路径上的所有节点被视为这个点的祖先,包括根和它本身 公 ...

  9. 通过 v-once 创建低开销的静态组件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <script s ...

  10. 我踩过的python的坑

    1. string中Template用法 变量名不能是${tradeDate+1}, python无法识别其为变量,应改为 ${tradeDate1} 变量替换的语句:data_new = Templ ...