使用python编写一个购物车的代码,条件是1.商品列表信息如下: commodity_list = [{'name': '华为手机', 'sum': 12, 'price': 4999.99, 'start': True}, {'name': '斯凯奇熊猫鞋', 'sum': 92, 'price': 199.99, 'start': True}, {'name': '洗衣粉', 'sum': 2, 'price': 19.00, 'start': True}, {'name': '风扇', 'sum': 5, 'price': 99.90, 'start': False}, {'name': '平板电脑', 'sum': 14, 'price': 2499.99, 'start': True}, {'name': '手表', 'sum': 3, 'price': 888.98, 'start': True}] burse = 10000.00 # 用户钱包 1).通过while循环实现购物功能,执行代码,提示:欢迎进入购物商城 2).展示所有可买的商品(名称,价格,数量,),commodity_list列表为商品信息, 3).start为True的商品为可买的,False状态的不可购买,用户通过输入商品名称将商品加入购物车,一次性只能加一件 4).用户在任意一个环节都可以退出购物或结算,用户进行结算时如果购物车为空,提示:购物车为空,结算失败 5).结算时需要判断钱包和库存是否足够,购物成功需要打印购买的商品名称、数量、金额及用户的账户余额

时间: 2023-03-04 15:16:45 浏览: 39
下面是一个简单的Python购物车代码,该代码会列出商品清单并询问用户要购买哪些商品,然后计算总价并判断是否余额充足: ``` commodity_list = [{'name': '华为手机', 'sum': 12, 'price': 4999.99, 'start': True}, {'name': '斯凯奇熊猫鞋', 'sum': 92, 'price': 199.99, 'start': True}, {'name': '洗衣粉', 'sum': 2, 'price': 19.00, 'start': True}, {'name': '风扇', 'sum': 5, 'price': 99.90, 'start': False}, {'name': '平板电脑', 'sum': 14, 'price': 2499.99, 'start': True}, {'name': '手表', 'sum': 3, 'price': 888.98, 'start': True}] burse = 10000.00 # 打印商品清单 print('商品清单:') for index, commodity in enumerate(commodity_list): if commodity['start']: print(f"{index + 1}. {commodity['name']} - 价格: {commodity['price']:.2f}元 - 库存: {commodity['sum']}") # 用户选择商品 total_price = 0 while True: choice = input('请选择要购买的商品编号(输入"q"结束选择):') if choice == 'q': break elif not choice.isdigit() or int(choice) < 1 or int(choice) > len(commodity_list): print('输入有误,请重新输入') continue commodity = commodity_list[int(choice) - 1] if not commodity['start']: print('该商品已下架') continue count = input('请输入购买数量:') if not count.isdigit() or int(count) < 1: print('输入有误,请重新输入') continue elif int(count) > commodity['sum']: print('库存不足') continue total_price += commodity['price'] * int(count) commodity['sum'] -= int(count) # 计算总价 print(f'总价为: {total_price:.2f}元') # 判断余额是否充足 if total_price > burse: print('余额不足') else: print(f'购买成功,余额为{burse - total_price:.2f}元') ```

相关推荐

以下是使用Python编写一个简单购物车程序的示例代码: commodity_list = [ {'name': '华为手机', 'sum': 12, 'price': 4999.99, 'start': True}, {'name': '斯凯奇熊猫鞋', 'sum': 92, 'price': 199.99, 'start': True}, {'name': '洗衣粉', 'sum': 2, 'price': 19.00, 'start': True}, {'name': '风扇', 'sum': 5, 'price': 99.90, 'start': False}, {'name': '平板电脑', 'sum': 14, 'price': 2499.99, 'start': True}, {'name': '手表', 'sum': 3, 'price': 888.98, 'start': True} ] burse = 10000.00 # 打印商品列表 print('商品列表:') for commodity in commodity_list: print(f"名称:{commodity['name']},库存:{commodity['sum']},价格:{commodity['price']}") print() # 初始化购物车和总价 shopping_cart = {} total_price = 0 # 开始购物循环 while True: # 打印余额和购物车信息 print(f"您的余额为:{burse},购物车:{shopping_cart},总价:{total_price}") # 获取用户输入 choice = input("请输入商品名称加购买数量(例如:'华为手机 1'),输入'结算'进行结算:") # 判断是否要结算 if choice == '结算': # 判断余额是否足够 if burse < total_price: print("余额不足,无法完成购买!") else: # 更新余额并打印购买信息 burse -= total_price print("购买成功!您的余额为:", burse) print("您购买的商品为:") for name, num in shopping_cart.items(): print(f"{name} x {num}") break # 解析用户输入 name, num = choice.split() num = int(num) # 在商品列表中查找商品 for commodity in commodity_list: if commodity['name'] == name: # 判断商品是否有库存并且在售 if commodity['start'] and commodity['sum'] >= num: # 更新购物车和总价 if name in shopping_cart: shopping_cart[name] += num else: shopping_cart[name] = num total_price += commodity['price'] * num commodity['sum'] -= num print(f"{name} x {num} 已加入购物车!") else: print("商品库存不足或已下架!") break else: print("找不到此商品!") 程序中首先定义了商品列表和初始余额,然后打印商品列表。接下来进入购物循环,循环体内首先打印余额和购物车信息,并读取用户输入。如果输入

最新推荐

小红书实时推荐系统架构-模型.png

小红书实时推荐系统架构-模型

C语言程序设计习题.pdf

C语言程序设计习题.pdf

小狐狸ChatGPT付费创作系统V2.0.4智能问答小程序,修复一个pc版的bug

小狐狸GPT付费体验系统是一款基于ThinkPHP框架开发的AI问答小程序,是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。 当前全民热议ChatGPT,流量超级大,引流不要太简单!一键下单即可拥有自己的GPT!无限多开、免费更新不限时,完全开源! 主要功能: 1、已对接流量主 2、转发领次数 3、看广告领次数 4、包月套餐 5、关键词过滤功能 6、多开版 搭建教程 1、在宝塔新建个站点,php版本使用7.2 、 7.3 或 7.4,上传到站点根目录,运行目录设置为/public 2、导入数据库文件,数据库文件是 /db.sql 3、修改数据库连接配置,配置文件是/.env 4、正式使用时,请把调试模式关闭:/.env文件第一行,true改成false 5、超管后台地址:http://域名/super 初始账号密码:super 123456 及时修改 PS:先把WEB端配置正常,H5和小程序自然会正常,公众号接口、授权域名、IP白名单三处关键配置

短视频交流点播系统.zip

短视频交流点播系统

软件销售基本流程.pdf

软件销售基本流程.pdf

代码随想录最新第三版-最强八股文

这份PDF就是最强⼋股⽂! 1. C++ C++基础、C++ STL、C++泛型编程、C++11新特性、《Effective STL》 2. Java Java基础、Java内存模型、Java面向对象、Java集合体系、接口、Lambda表达式、类加载机制、内部类、代理类、Java并发、JVM、Java后端编译、Spring 3. Go defer底层原理、goroutine、select实现机制 4. 算法学习 数组、链表、回溯算法、贪心算法、动态规划、二叉树、排序算法、数据结构 5. 计算机基础 操作系统、数据库、计算机网络、设计模式、Linux、计算机系统 6. 前端学习 浏览器、JavaScript、CSS、HTML、React、VUE 7. 面经分享 字节、美团Java面、百度、京东、暑期实习...... 8. 编程常识 9. 问答精华 10.总结与经验分享 ......

事件摄像机的异步事件处理方法及快速目标识别

934}{基于图的异步事件处理的快速目标识别Yijin Li,Han Zhou,Bangbang Yang,Ye Zhang,Zhaopeng Cui,Hujun Bao,GuofengZhang*浙江大学CAD CG国家重点实验室†摘要与传统摄像机不同,事件摄像机捕获异步事件流,其中每个事件编码像素位置、触发时间和亮度变化的极性。在本文中,我们介绍了一种新的基于图的框架事件摄像机,即SlideGCN。与最近一些使用事件组作为输入的基于图的方法不同,我们的方法可以有效地逐个事件处理数据,解锁事件数据的低延迟特性,同时仍然在内部保持图的结构。为了快速构建图,我们开发了一个半径搜索算法,该算法更好地利用了事件云的部分正则结构,而不是基于k-d树的通用方法。实验表明,我们的方法降低了计算复杂度高达100倍,相对于当前的基于图的方法,同时保持最先进的性能上的对象识别。此外,我们验证了我们的方�

下半年软件开发工作计划应该分哪几个模块

通常来说,软件开发工作可以分为以下几个模块: 1. 需求分析:确定软件的功能、特性和用户需求,以及开发的目标和约束条件。 2. 设计阶段:根据需求分析的结果,制定软件的架构、模块和接口设计,确定开发所需的技术和工具。 3. 编码实现:根据设计文档和开发计划,实现软件的各项功能和模块,编写测试用例和文档。 4. 测试阶段:对软件进行各种测试,包括单元测试、集成测试、功能测试、性能测试、安全测试等,确保软件的质量和稳定性。 5. 发布和部署:将软件打包发布,并进行部署和安装,确保用户可以方便地使用软件。 6. 维护和更新:对软件进行维护和更新,修复漏洞和Bug,添加新的特性和功能,保证

数据结构1800试题.pdf

你还在苦苦寻找数据结构的题目吗?这里刚刚上传了一份数据结构共1800道试题,轻松解决期末挂科的难题。不信?你下载看看,这里是纯题目,你下载了再来私信我答案。按数据结构教材分章节,每一章节都有选择题、或有判断题、填空题、算法设计题及应用题,题型丰富多样,共五种类型题目。本学期已过去一半,相信你数据结构叶已经学得差不多了,是时候拿题来练练手了,如果你考研,更需要这份1800道题来巩固自己的基础及攻克重点难点。现在下载,不早不晚,越往后拖,越到后面,你身边的人就越卷,甚至卷得达到你无法想象的程度。我也是曾经遇到过这样的人,学习,练题,就要趁现在,不然到时你都不知道要刷数据结构题好还是高数、工数、大英,或是算法题?学完理论要及时巩固知识内容才是王道!记住!!!下载了来要答案(v:zywcv1220)。

开集域自适应方法及其在靶点发现中的应用

9322基于开集域自适应的新靶点发现Taotao Jing< $,Hongfu LiuXiang,and Zhengming Ding<$†美国杜兰大学计算机科学系‡美国布兰代斯大学Michtom计算机科学学院网址:tjing@tulane.edu,hongfuliu@brandeis.edu,网址:www.example.com,zding1@tulane.edu摘要开集域自适应算法(OSDA)认为目标域包含了在外部源域中未观察到的新类别的样本不幸的是,现有的OSDA方法总是忽略了看不见的类别的信息的需求,并简单地将它们识别为“未知”集合而没有进一步的这促使我们通过探索底层结构和恢复其不可解释的语义属性来更具体地理解未知类别。在本文中,我们提出了一种新的框架,以准确地识别目标领域中的可见类别,并有效地恢复未见过的类别的语义属性具体而言,结构保持部分对齐开发,通过域不变的特征学习识别看到的基于视觉图的属性传播是为了通过视觉语义映射将可见属�