python3 购物车 增改查终极版~
还是先来条NLP再说,快没了,以后想抄还没有。。。
十一,没有挫败,只有回应讯息
“挫败”只是指出过去的做法得不到预期的效果,是给我们需要改变的信号。
“挫败”只是在事情画上句号时才能用上,欲想事情解决,即是事情仍会继续下去,这二字便不适用。
“挫败”是指过去的事,“怎样改变做法”是指向未来。
“挫败“是过去的经验,而经验是让我们提升自我的垫脚石,因为经验是能力的基础,而能力是自信的基础。
每次”挫败“,都只不过是学习过程里修正行动的其中一步。
人身里所有的学习,都是经由不断修正而达致完善。
想要成功,首先要相信有成功的可能。
每次的”挫败“带来的教训掌握了,每次便都成了学习。
自信不足的人,潜意识总是在找”不用干下去的“借口,”挫败“二字便很容易冒出来。
购物车终极版~
#!usr/bin/env/ python
# -*- coding:utf-8 -*-
# Author: XiaoFeng goods = [{"name": "铅笔", "price": 2},
{"name": "橡皮", "price": 1},
{"name": "尺子", "price": 3}]
shopping_car = {}
total = 0
print("\033[31;1mWelcome to XiaoXiao's store!\033[0m".center(70, "*"))
while 1:
print("-" * 59)
for index, i in enumerate(goods):
print("商品名:{} {}\t价格:{}元".format(index + 1, i["name"], i["price"]))
choice = input("请输入您的选择(a:添加, d:调整, c: 查看购物车 q: 结算):").strip()
if choice.lower() == "a":
while 1:
order = input("请输入商品编号(b:返回):").strip()
if order.isdigit():
order = int(order)
if 0 < order <= len(goods):
while 1:
num = input("请输入要购买的数量(b:返回):").strip()
if num.isdigit():
num = int(num)
if goods[order - 1]["name"] in shopping_car:
shopping_car[goods[order - 1]["name"]]["num"] = \
shopping_car[goods[order - 1]["name"]]["num"] + num
break
else:
shopping_car[goods[order - 1]["name"]] = \
{"price": goods[order - 1]["price"], "num": num}
break
elif num.lower() == "b":
break
else:
print("请输入数字!")
else:
print("请输入显示范围内的序号!")
elif order.lower() == "b":
break
else:
print("请输入选择序号!")
elif choice.lower() == "d":
while 1:
order_1 = input("请输入想要调整的商品号(b:返回):").strip()
if order_1.isdigit():
order_1 = int(order_1)
if goods[order_1 - 1]["name"] in shopping_car:
while 1:
num_1 = input("请输入想要调整的数量(b:返回)").strip()
if num_1.isdigit():
num_1 = int(num_1)
if num_1 >= 0:
shopping_car[goods[order_1 - 1]["name"]]["num"] = num_1
break
elif num_1 < 0:
print("请别乱来,谢谢")
else:
print("请输入正确的数字!")
elif num_1.lower() == "b":
break
else:
print("请输入数字或选择返回b!")
else:
print("您还没有选购此商品,赶快添加吧~")
elif order_1.lower() == "b":
break
else:
print("请输入有效编号") elif choice.lower() == "c":
total = 0
if shopping_car:
print("\033[40;1m购物车\033[0m".center(50, "-"))
for k, v in shopping_car.items():
print("商品名:{}\t价格:{}元\t\t数量:{}个".format(k, v["price"], v["num"]))
total += v["price"] * v["num"]
print("总计:", total, "元")
else:
print("购物车为空哦,快快选购吧~") elif choice.lower() == "q":
account = input("一共是%d元,现金还是扫码? 嘻嘻!)" % total).strip()
if account.isdigit():
account = int(account)
if account >= total:
print("付款%d元,收您%d元,找零%d元,谢谢惠顾,欢迎下次光临~!" % (account, total, account - total))
break
else:
print("您的余额不足哦,叫媳妇儿来付钱吧~")
else:
print("请刷卡,别开玩笑,给钱或者把东西留下,或者打电话叫你媳妇儿来!")
else:
print("请输入正确操作!")
python3 购物车 增改查终极版~的更多相关文章
- mysql 中的增改查删(CRUD)
增改查删可以用CURD来表示 增加:create 修改:update 查找:read 删除:delete 增加create : insert +表名+values+(信息): in ...
- NX二次开发-NX访问SqlServer数据库(增删改查)C#版
版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...
- iOS 数据库的增删改查(OC版)
自己写了几个方法来实现数据的增删改查功能: 首先在TARGETS--->>Build phases里面添加数据库所关联的库文件libsqlite3.tbd 添加完以后,在控制器上添加 #i ...
- JS高级. 04 增删改查面向对象版歌曲管理、递归、
增 数组.push() 删 数组.splice(开始删除索引,删除几个) 在当前对象中调用当前对象的方法中和属性,必须用this调用 nodeType判断节点类型 节点.nodeType == 1: ...
- MySQL数据库 、数据表、数据的增删改查简版
数据库操作 # 增 CREATE(DATABASE | SCHEMA)[IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET[=]charset_name] ...
- php mysqli 链接数据库 CURD 增改查删
<?php function println($msg) { echo "<br>"; echo $msg; } $mysql_server_name = &qu ...
- angularJS1笔记-(3)-购物车增删改查练习
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- MongoDB安装、CURD增改查删操作、应用场景
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".非关系型的数据存储 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 ...
- hibernate 增改查后对象的三种状态转换
this.getSession().update(obj); this.getSession().merge(obj); this.getSession().saveOrUpdate(obj);1. ...
随机推荐
- redis 特性
Redis 三大特性: Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redis 不仅支持简单的 键 * 值 类型的数据, 还提供list.set.z ...
- 从 RegExp 构造器看 JS 字符串转义设计
多年前我第一次入职腾讯的时候,DC 从杭州给我寄来了一本他刚翻译出炉的<高性能 JavaScript>.那段时间为了帮忙校对,我仔细阅读了书中的每一个段落,结果积累了不少 JavaScri ...
- Hadoop系列009-NameNode工作机制
本人微信公众号,欢迎扫码关注! NameNode工作机制 1 NameNode & SecondaryNameNode工作机制 1.1 第一阶段:namenode启动 1)第一次启动namen ...
- 每日分享!~ JavaScript(拖拽事件)
浏览器的拖拉事件 拖拉(drag)指的是,用户在某个对象上按下鼠标键不放,拖动它到另一个位置,然后释放鼠标键,将该对象放在那里. 拖拉的对象有好几种,包括元素节点.图片.链接.选中的文字等等.在网页中 ...
- 从壹开始微服务 [ DDD ] 之三 ║ 简单说说:领域、子域、限界上下文
前言 哈喽大家好,DDD领域驱动设计系列又开始了,前天周二的那篇入门文章中,也收到了一定的效果(写小说的除外),同时我也是倍感鸭梨,怎么说呢,DDD领域驱动设计已经有十年历史了,甚至更久,但是包括我在 ...
- 网络层和arp协议
1:arp协议功能:获取mac地址 ----------------------在同一个局域网:发送端mac 接收端mac(FF:FF:FF:FF:FF:FF:FF) 源IP 目标IP 数据 - ...
- JVM回收器与调优
定义: 使用编程语言将GC算法实现出来,产生的程序就是垃圾搜集器了 JVM给了三种选择:串行收集器.并行收集器.并发收集器 串行搜集器(serial collector):它只有一条GC线程,且就像前 ...
- MongoDB3.2.22快速入门与使用【未完待续】
1.CentOS的安装和mongodb,UVE的使用 1.1.CentOS7安装 虚拟机CentOS7安装步骤:https://www.cnblogs.com/wyt007/p/10295834.ht ...
- 105 - kube-scheduler源码分析 - predicate算法注册
一.predicate注册过程 今天我们来聊聊predicate函数是怎么被注册进去的,也就是要执行的一堆predicate是怎么成为“选中的孩子”. 代码位置:pkg/scheduler/fact ...
- DS控件库 DS标签的另类用法之折叠展开
某些场合下,可以通过动态设置DS标签的文本内容来输出不同的显示效果,以下是示例. 示例中的素材 示例资源文本 String1="<linkimg=E1><b>&l ...