我心目中的Dream-购物车
功能要求:
1.要求用户输入自己拥有的总资产,例如:30000
2.显示商品列表的序号,商品名称,商品价格,让用户根据序号选择商品,然后加入购物车
例如:
1 Macbook 12000
2 Logines 8730
3 Villa 650000
3.用户可以多次购买商品
4.用户输入q退出|输入n结算
5.结算的时候如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
trades = [
{"trade_name": "Macbook", "value": 12000},
{"trade_name": "Gucci-glasses", "value": 6388},
{"trade_name": "Logines", "value": 8730},
{"trade_name": "Girlfriend", "value":23000},
{"trade_name": "Tesla", "value": 476000},
{"trade_name": "Diamond-ring", "value": 18800},
{"trade_name": "Villa", "value": 6500000},
]
trades = [
{"trade_name": "Macbook", "value": 12000},
{"trade_name": "Gucci-glasses", "value": 6388},
{"trade_name": "Logines", "value": 8730},
{"trade_name": "Girlfriend", "value":23000},
{"trade_name": "Tesla", "value": 476000},
{"trade_name": "Diamond-ring", "value": 18800},
{"trade_name": "Villa", "value": 6500000},
]
flag = 1
shopping_cart = {}
usr_fund = 0
while flag:
fund = input('尊敬的客户,请输出您的资产: ').strip()
if fund.isdigit():
usr_fund += int(fund) # 得到用户的总资产
break
else:
print('您输入的金额有误,请重新输入') while flag:
for i in trades:
print(range(len(trades)),i['trade_name'],i['value'])
# 取得商品序号,商品和价钱
res = input('请您输入商品序号或者N/Q结算或者退出: ').strip()
if res.upper() =='Q': # 执行退出操作
exit('有需要再来光顾哦!')
elif res.upper() =='N': #执行结算操作
while flag:
if usr_fund < sum(shopping_cart.values()):
# 如果用户金额小于结算金额
cmd = input(f"您还差{(sum(shopping_cart.values()) - usr_fund)}元才能付款,输入1/0可以选择充值或取消购买").strip()
if cmd == '':
while 1:
cmd_1 = input('充值金额: ').strip()
if cmd_1.isdigit():
usr_fund += int(cmd_1)
break
else:
print('您输入的有误,请重新输入')
elif cmd == '':
exit('有需要再来光顾哦!')
else:
print('您输入的有误,请重新输入')
else:
print('您的购物车现在有: ')
for i in shopping_cart:
print(i,shopping_cart[i])
print(f"您的余额还有{usr_fund - sum(shopping_cart.values())}元")
break
break elif res.isdigit(): #如果用户输入的是序号,那就加入购物车
res_1 = int(res)
if res_1 - 1 in [range(len(trades)) for i in trades]: #如果用户输入的序号在商品列表中
if trades[res_1]['trade_name'] not in shopping_cart:
shopping_cart.setdefault(trades[res_1 -1]['trade_name'],trades[res_1 -1]['value'])
else:
shopping_cart[trades[res_1 -1]['trade_name']] += trades[res_1 -1]['value']
print('\n'f"{trades[res_1 -1]['trade_name']}已添加到购物车,价值{trades[res_1 -1]['value']}元"'\n')
else:
print('您输入的有误,请重新输入')
else:
print('您输入的有误,请重新输入')
我心目中的Dream-购物车的更多相关文章
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
- 追逐心目中的那个Ta
申明:全篇皆为作者臆想,浪漫主义代表派作品,若有雷同,纯属巧合 人生最难过的不就是在一无所有的年纪里遇到了最想呵护一生的人,而在拥有一切的时候却失去了不顾一切的心. 长夜漫漫,本是相思人,偏听多情曲, ...
- “造轮运动”之 ORM框架系列(二)~ 说说我心目中的ORM框架
ORM概念解析 首先梳理一下ORM的概念,ORM的全拼是Object Relation Mapping (对象关系映射),其中Object就是面向对象语言中的对象,本文使用的是c#语言,所以就是.ne ...
- PHP中封装Redis购物车功能
<?php // 服务层 namespace Common\Service; use Vendor\Func\Red; class CartService extends CommonServi ...
- 在vue中如何实现购物车checkbox的三级联动
最近用vue写一个电商项目,自然就少不了要写一个购物车的相关页面,功能完整的购物车的checkbox应该是三级联动的,1级checkbox是选中购物车中所有的商品,2级checkbox是选中某个店铺下 ...
- 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...
- 我心目中的Asp.net核心对象
转:http://www.cnblogs.com/fish-li/archive/2011/08/21/2148640.html 阅读目录 开始 HttpRuntime HttpServerUtili ...
- 小白心目中的Java抽象类(abstract class)
在java开发中,我们有时会定义了一个父类,这个父类只有对方法的描述,但却没有在父类中写出对方法的实现,这种被定义的方法称为抽象方法.那么理所当然,含有抽象方法的类就称为抽象类.用关键字abstrac ...
- Linux专家心目中的最佳Linux发行版有哪些?
坦率地说,我对Linux桌面的关注程度多于对Linux发行版的关注.在我看来,桌面环境是创新不断的领域.我认为,如果某个发行版呼吁关注自己,可能哪里出了岔子.不过,有一些Linux发行版还是我青睐的. ...
随机推荐
- docker部署maven私有仓库 nexus3
docker pull sonatype/nexus3: docker run -d --name nexus3.x --network host -v /volume-data/nexus3/nex ...
- sql server 多表关联更新 update
update a set a.KSMC = b.name from JC_KSXXB a inner join chisdb_ymyy..zd_unit_code b on a.KSDM = b.co ...
- linux内核剖析(零)linux系统启动过程详解-开机加电后发生了什么
本文参考了如下文章 深入理解linux启动过程 mbr (主引导记录(Master Boot Record)) 电脑从开机加电到操作系统main函数之前执行的过程 详解linux系统的启动过程及系统初 ...
- JS 全屏代码
// 推断各种浏览器,找到正确的方法 function launchFullscreen(element) { if(element.requestFullscreen) { element.requ ...
- Android UI系列-----LinearLayout的综合使用
这里将会对LinearLayout的布局方式进行一个综合的使用,通过一个例子来看看LinearLayout的嵌套布局方式,在这之前首先介绍三个属性: 1.①android:layout_weigth: ...
- 【Vegas原创】SQL Server 只安装客户端的方法
只安装管理工具
- Activity标题(title)的显示和隐藏
开发Android应用程序,我们总会遇到Activity的title把显示的内容遮挡了一部分.如果能把它去掉,我们的应用界面就会变得更加简洁,那该多好.下面有两种方法可以去掉: (方法一):通过一句J ...
- 揭开Redis的神秘面纱
本篇博文将为你解开Redis的神秘面纱,通过阅读本篇博文你将了解到以下内容: 什么是Redis? 为什么选择 Redis? 什么场景下用Redis? Redis 支持哪些语言? Redis下载 Red ...
- win8使用技巧
windows 8操作系统相信大家已经不再陌生了,虽然正式版本还未发布,但不少朋友已经在使用微软事先推出的windows 消费者预览版,直白的说就是公测版,预览版是免费的,但仅可以使用一年,但其功能与 ...
- linux每日命令(5):mkdir命令
linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录名或路径名 2. ...