Python实现商城购物经典案例
代码分步骤思路:
商城添加商品:opea_db = [{'store_name': '手机','num': 1}]
while True:
store_name=input('请输入需要存放的商品(按1退出添加1):')
# def f(o):
# list(filter(f,opea_db)) # 输出每个字典
def f(i):
if i['store_name']==store_name:
num=i['num']+1
i['num']=num
return i
else:
# 新添加的商品数量默认为0 没有库存
opea_db.append({'store_name':store_name,'num':0}) list(filter(f,opea_db))
print(opea_db)
或者这样写:
while True:
store_name=input('请输入需要存放的商品(按1退出添加1):')
if store_name=="1"
break
# def f(o):
# print(o)
# list(filter(f,opea_db)) # 输出每个字典
for i in opea_db:
if i['store_name']==store_name:
num=i['num']+1 # 在默认值基础上增加
# print(num)
i['num']=num
else:
opea_db.append({'store_name': store_name,'num':0 }) print(opea_db)
运行截图:

此写法缺陷:
增加新的商品且再次增加对应数量的话打印输出只显示最终商品数量,不要把前一次数量信息都显示出来,重复!
# 新添加的商品数量默认为0 没有库存
opea_db.append({'store_name':store_name,'num':0}) # 此部分没有过滤器过滤,导致输出存在重复

代码优化:新增商品
opea_db = [{'store_name': '手机','num': 1}]
while True:
store_name=input('请输入需要存放的商品(按1退出添加):')
if store_name=="1"
break
# def f(o):
# list(filter(f,opea_db)) # 输出每个字典
def f(i):
if i['store_name']==store_name:
num=i['num']+1
i['num']=num
return i
# else:
# # 新添加的商品数量默认为0 没有库存
# opea_db.append({'store_name':store_name,'num':0})
#
# list(filter(f,opea_db))
# print(opea_db)
# 如果新添加商品(i['store_name']不等于store_name)没有返回值return 就None =====假的
需要执行否定语句,即下述代码 ---添加商品
if not list(filter(f,opea_db)):
# opea_db.append({'store_name':store_name,'num':1})
opea_db.append({'store_name': store_name,'num': 1})
print(opea_db)
#if store_name=="1":
#break
运行截图:

Python实现商城购物经典案例的更多相关文章
- python经典案例
前言:初学者对python的流程语句有一定的了解,但是运用起来总会磕磕碰碰.本文总结了一些初学者在学习python时做的经典案例 一.名片管理系统(限单个名片) info = {'name':'jam ...
- Python递归的经典案例
目录 : 一.递归的简介 二.递归的经典应用 2.1 递归求阶乘 2.2 递归推斐波那契数列 2.3 二分法找有序列表指定值 2.4 递归解汉诺塔 前言: 当我们碰到诸如需要求阶乘或斐 ...
- 经典案例之MouseJack
引言:在昨天的文章<无线键鼠监听与劫持>中,我们提到今天会向您介绍一个无线键鼠的监听与劫持的经典案例,<MouseJack>:MouseJack能利用无线鼠标和键盘存在的一些问 ...
- 100个Linux Shell脚本经典案例(附PDF)
转载自:https://mp.weixin.qq.com/s/tCKAM67_7K7q2vJthaIsDQ 原文链接:https://wenku.baidu.com/view/4f089430a116 ...
- javascript的理解及经典案例
js的简介: JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言. 你可以利用JavaScript轻易的做出亲切的欢迎讯息.漂亮的数字钟.有广告效 ...
- jQuery基础的工厂函数以及定时器的经典案例
1. jQuery的基本信息: 1.1 定义: jQuery是JavaScript的程序库之一,它是JavaScript对象和实用函数的封装, 1.2 作用: 许多使用JavaScript能实现的交 ...
- Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)
Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编 ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...
- 经典案例:那些让人赞不绝口的创新 HTML5 网站
在过去的10年里,网页设计师使用 Flash.JavaScript 或其他复杂的软件和技术来创建网站.但现在你可以前所未有的快速.轻松地设计或创造互动的.有趣好看的网站.如何创建?答案是 HTML5 ...
- Altera OpenCL用于计算机领域的13个经典案例(转)
英文出自:Streamcomputing 转自:http://www.csdn.net/article/2013-10-29/2817319-the-application-areas-opencl- ...
- php中foreach()函数与Array数组经典案例讲解
//php中foreach()函数与Array数组经典案例讲解 function getVal($v) { return $v; //可以加任意检查代码,列入要求$v必须是数字,或过滤非法字符串等.} ...
随机推荐
- 2022-03-15:给定一棵树的头节点head,原本是一棵正常的树, 现在,在树上多加了一条冗余的边, 请找到这条冗余的边并返回。
2022-03-15:给定一棵树的头节点head,原本是一棵正常的树, 现在,在树上多加了一条冗余的边, 请找到这条冗余的边并返回. 答案2022-03-15: 1.指向头,入度没有0的.入度没有2的 ...
- 2021-07-12:缺失的第一个正数。给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。比如[3,4,5
2021-07-12:缺失的第一个正数.给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数.请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案.比如[3,4,5 ...
- 「P2」试下1个半月能不能水出个毕设
0.目标 将上个 springboot 项目 + html 中的html用Vue来重写,也就是在原springboot项目中集成Vue 1.在界面上,将html改成vue的形式 1.1.原html & ...
- 洛谷 - P1030 求先序
Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,且二叉树的节点个数 ≤8≤8). Input 共两行,均为大写字母组成的字符串,表示一棵二叉 ...
- Iframe在Vue中的状态保持技术
引言 Iframe是一个历史悠久的HTML元素,根据MDN WEB DOCS官方介绍,Iframe定义为HTML内联框架元素,表示嵌套的Browsing Context,它能够将另一个HTML页面嵌入 ...
- git解决一个电脑多用户情况(win7)
首先:在输入ssh-keygen -t rsa -C "注册邮箱"后不要急着按enter,此时输入秘钥对的文件名,不要跟默认文件重名(默认的是id_rsa)
- CSS3实现3D效果的图片墙
先来看一下效果:http://39.105.101.122/myhtml/CSS/transform_3D/img_3D.html 目前没有做IE的兼容,在谷歌浏览器里面可以看到效果 布局结构: &l ...
- 基于picker封装的移动端简单实用选择器select插件
基于picker封装的移动端简单实用选择器select插件; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12797 效果图如 ...
- Taurus .Net Core 微服务开源框架:Admin 插件【2】 - 系统环境信息管理
前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[1] - 微服务节点管理 本篇继续介绍下一个内容: 1.系统环境信息节点 - OS-Environment 界面 基 ...
- 离线安装mysql报错解决方法:/usr/sbin/mysqld: error while loading shared libraries: libaio.so.1: cannot open sha --九五小庞
Linux:centos 7.6 64位 mysql:5.6使用离线方式安装:rpm -ivh --nodeps mysql* ,执行 systemctl start mysqld.service发现 ...