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. ...
随机推荐
- 基于weex的app开发脚手架weexplus学习笔记
认识weexplus weexplus是基于weex官方的二次开发版本,weex和react native一样同属第2代跨平台技术,解决了第一代性能低下,体验不好的问题,同时保留了第一代 多平台一套代 ...
- sqlserver2012 在视图中建索引
第一种 如果已经有视图但是要加索引只需要执行 以下SQL就好(前提是此视图必须 绑定到架构) CREATE UNIQUE CLUSTERED INDEX in ...
- python线程(二)代码部分
使用threading创建线程: from threading import Thread def work(name): print(f"我是线程{name}") if __na ...
- bootStrap-table服务器端后台分页的使用,以及自定义搜索框的实现,前端代码到数据查询超详细讲解
关于分页,之前一直纯手写js代码来实现,最近又需要用到分页,找了好多最终确定bootstrap-table,正好前端页面用的是bootstrap. 首先下载BootStrap-table的js和CSS ...
- 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识
第41章 HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...
- SpringBoot基础系列一
SpringBoot基础知识概览 特性 核心理念:约定优于配置 特点: 1. 开箱即用,根据项目依赖自动配置 2. 功能强大的服务体系,如嵌入式服务.安全 3. 绝无代码生成,不用写.xml配置,用注 ...
- 将Python 程序打包成 .exe格式入门
PyInstaller PyInstaller 是一个十分有用的第三方库,可以用来打包 python 应用程序,打包完的程序就可以在没有安装 Python 解释器的机器上运行了. 它能够在 Windo ...
- 消除点击连接或者按钮或者执行onclick事件时出现的边框
css中添加 *:not(input) { font-family: sans-serif; font-size-adjust: none; -webkit-user-select: none; -w ...
- java并发多线程显式锁Condition条件简介分析与监视器 多线程下篇(四)
Lock接口提供了方法Condition newCondition();用于获取对应锁的条件,可以在这个条件对象上调用监视器方法 可以理解为,原本借助于synchronized关键字以及锁对象,配备了 ...
- angr学习
0.资料 几个主要的网站 angr的github:https://github.com/angr angr的document:https://docs.angr.io/ angr的api:https: ...