我心目中的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发行版还是我青睐的. ...
随机推荐
- eclipse里面使用Maven搭建web工程
一.建立Maven项目 使用Eclipse的maven构建一个web项目,以构建SpringMVC项目为例: 1.1 选择建立Maven Project 选择File -> New -> ...
- ionic build - 修改gradle路径提升速度和成功率
ionic build 不成功很多时候是因为下载gradle太慢, 我们可以下载好gradle然后修改配置文件, 从而省去这个烦人的下载过程 1. 下载报错时的gradle zip文件, 或者直接查看 ...
- ANY 和 IN 查询价格大于或等于"超级本"价格的商品,并且按价格降序排列
-- 查询价格大于或等于"超级本"价格的商品,并且按价格降序排列 //ANY用法 //与比较操作符联合使用,表示与子查询返回的任何值比较为 TRUE ,则返回 TRUE //简单案 ...
- Visual Studio 统计代码行数
介绍一种简单的统计代码行数的小技巧, 使用正则表达式,用VS强大的查找功能 b[^:b#/]+.$ 最后结果:
- STL--迭代器(iterator)使用详解
迭代器的分类 在STL中,原生指针也是一种迭代器,除了原生指针以外,迭代器被分为五类: Input Iterator 此迭代器不允许修改所指的对象,即是只读的.支持==.!=.++.*.->等操 ...
- mongodb浅析
设计特征: MongoDB 的设计目标是高性能.可扩展.易部署.易使用,存储数据非常方便.其主要功能特性如下. (1)面向集合存储,容易存储对象类型的数据.在MongoDB 中数据被分组存储在集合中, ...
- 每日英语:Mrs. Obama Takes Stab at Ping-Pong Diplomacy
U.S. first lady Michelle Obama took ping-pong diplomacy to a new level on Friday on her weeklong tou ...
- 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出模式,采 用灌电流方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒 ...
- 关于Unity中NGUI的3D角色血条的实现
首先要到Unity的Assets Store里面去下载一个扩展的Package叫NGUI HUD Text v1.13(81),注意如果没有安装NGUI就必须先安装NGUI插件,否则会用不了,因为HU ...
- js中的try/catch
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...