上次的学习又没有坚持下来,工作忙的不可开交,但我反思了一下还是自己没有下定决心好好学习,所以这次为期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. Java初学者作业——声明变量对个人信息进行输入和输出

    返回本章节 返回作业目录 需求说明: 声明变量存储个人信息(姓名.年龄.性别.地址以及余额),通过键盘输入个人信息并存储在相应的变量中, 最后将个人信息输出. 实现思路: 声明存储姓名.年龄.性别.地 ...

  2. Exchange ProxyLogon漏洞分析

    Exchange ProxyLogon漏洞分析 前言 续前文继续学习Exchange漏洞 Proxyshell 影响范围 Exchange Server 2019 < 15.02.0792.01 ...

  3. .net core集成使用EasyNetQ来使用rabbitmq

    之前有写到一篇介绍EasyNetQ的博文(C# .net 使用rabbitmq消息队列--EasyNetQ插件介绍),所以本文从.net core的角度去继承使用EasyNetQ,而用法类似于之前集成 ...

  4. .NetCore下构建自己的服务配置中心-手动造轮子

    本人主要利用IdentityServer4以及SignalR来实现,IdentityServer4作为认证,SignalR来交互配置,这里一些代码可能就是部分提出来,主要介绍实现原理及方法 实现配置中 ...

  5. HttpRunner_参数化进阶

    一.获取返回包数据   在提取参数时,当 HTTP 的请求响应结果为 JSON 格式,则可以采用.运算符的方式,逐级往下获取到参数值:响应结果的整体内容引用方式为 content 或者 body,如上 ...

  6. 在 CentOS 7 上安装和配置 Puppet

    1 准备 2台 centos7 (master/server:192.168.1.103 agent/client:192.168.1.106) 分别添加puppet自定义仓库 https://yum ...

  7. warmup(HCTF 2018)

    为啥想写这道题的wp呢,因为这道题就是照着phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)复现出来的 题目 查看源码很容易找到source.php,直接访问 分析 题 ...

  8. day 13 函数指针类型

    (1).有以下程序: 则正确的选项是[B] (A).7 4 (B).4 10 (C).8 8 (D)10 10 分析:主要考求字符串的长度,strlen是专门求字符串长度的函数,但不包含'\0'在内. ...

  9. 《剑指offer》面试题55 - II. 平衡二叉树

    问题描述 输入一棵二叉树的根节点,判断该树是不是平衡二叉树.如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树. 示例 1: 给定二叉树 [3,9,20,null,null, ...

  10. 在Rainbond上使用Locust进行压力测试

    Locust简介 Locust 是一种易于使用.可编写脚本且可扩展的性能测试工具.并且有一个用户友好的 Web 界面,可以实时显示测试进度.甚至可以在测试运行时更改负载.它也可以在没有 UI 的情况下 ...