python3 购物车练习
# 购物车
# 功能要求:
# 要求用户输入总资产,例如:2000
# 显示商品列表,让用户根据序号选择商品,加入购物车
# 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
# 可充值、某商品移除购物车
goods = [{"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ]
dic1, dic2, dic3, dic4 = goods # 拆分为各商品字典
name = [dic1["name"], dic2["name"], dic3["name"], dic4["name"]] # 商品名列表(从各商品字典取去商品名)
price = [dic1["price"], dic2["price"], dic3["price"], dic4["price"]] # 商品价格列表(与商品名列表对应)
# dic_g = {} # 定义购物车字典(未使用)
list_g = [] # 购物车商品列表
price_g = [] # 购物车商品价格列表
price_s = 0 # 购物车商品总价
mo = input("请输入您的总资产(¥):")
tag = True
while tag:
if mo.isdigit(): # 判断金额是否为整数
mo = int(mo)
# 列出商品编号和名称
print("\n""输入商品序号添加至购物车:")
for i in range(0, len(name)):
print(i + 1, name[i])
print(len(name) + 1, "退出购物")
print(len(name) + 2, "<<结算>>")
# 购物选择
tag_n = True
while tag_n:
n = int(input('\n'"请选择商品>>>"))
if n in range(1, len(name) + 1):
list_g.append(name[n - 1]) # 加入购物车商品列表(!!!如果换成从字典取值,则不能显示重复购买的商品)
price_g.append(price[n - 1]) # 加入购物车商品价格列表(可不加,直接加价格)
price_s += price[n - 1] # 每添加一次购物车,购物总价也增加
print("购物车已添加:", list_g)
print("总价格为:", price_s) # 打印总价格
elif n == len(name) + 1:
print("已退出购物!")
tag_n = False
tag = False
elif n == len(name) + 2:
if len(list_g) == 0:
print("购物车无商品!")
continue
# 购物车有商品结算
tag_g = True
while tag_g:
# 资产不足
if mo < price_s:
print("\n""资产不足!充值或删除商品:""\n"
"1 充值""\n"
"2 删除商品""\n"
"3 退出购物")
m = int(input("请选择>>"))
tag_m = True
while tag_m:
# 充值
if m == 1:
mo_add = int(input("请输入金额:"))
mo += mo_add
print("总资产为:", mo)
print("总价格为:", price_s)
tag_m = False
# 删除购物车商品
elif m == 2:
print("\n""购物车已添加:", list_g)
print("选择要删除购物车的商品编号>>>")
for i in range(0, len(name)):
print(i + 1, name[i])
print(len(name) + 1, "返回上一层")
# 购物车删除,总价格减除
tag_n1 = True
while tag_n1:
n1 = int(input("请选择>"))
if n1 in range(1, len(name) + 1) and name[n1 - 1] in list_g:
list_g.remove(name[n1 - 1]) # 移除购物车商品列表
price_g.remove(price[n1 - 1]) # 移除购物车商品价格列表(可不加,直接减总价)
price_s = price_s - price[n1 - 1]
if len(list_g) == 0: # 判断购物车是否被删空
print("\n""购物车无商品!")
mo = str(mo) # 无商品,返回重新购物
Enter = input("<<<按Enter添加购物车>>>")
tag_n1 = False
tag_m = False
tag_g = False
tag_n = False
else:
print("\n""购物车剩余:", list_g)
print("总资产为:", mo)
print("总价格为:", price_s)
tag_n1 = False
elif n1 == len(name) + 1:
tag_n1 = False
tag_m = False
else:
print("购物车没有此商品!")
elif m == 3:
print("已退出购物!")
tag_m = False
tag_g = False
tag_n = False
tag = False
else:
print("输入错误!")
# 资产充足
else:
enter = input("<<资产充足,按Enter结算>>")
mo -= price_s
print("资产余额:", mo)
print("购物成功!")
tag_g = False
tag_n = False
tag = False
else:
print("输入错误!")
else:
print("输入金额错误!")
python3 购物车练习的更多相关文章
- python3 购物车小程序,余额写入文件保存
python3 购物车小程序,余额写入文件保存 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan goods = ( ...
- python3购物车
python3实现购物车小程序,优化后将程序分成函数,用文件注册和验证用户名密码. #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 20 ...
- python3 购物车 增改查终极版~
还是先来条NLP再说,快没了,以后想抄还没有... 十一,没有挫败,只有回应讯息 “挫败”只是指出过去的做法得不到预期的效果,是给我们需要改变的信号. “挫败”只是在事情画上句号时才能用上,欲想事情解 ...
- python3 购物车
今天干了啥?喂了喂龟,看了看鱼... 然后就是学习了两个模块:sys模块和os模块,突然觉得python真的好,只要英语学的好,看代码超级舒服的说,嗯,我要好好学英语,今天背了几个啥,唉.写完博客再背 ...
- Python3 list与循环练习(购物车)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Author;Tsukasa product_list = [ ('Iphone',5800), (' ...
- Python3.5 Day2作业:购物车程序
需求: 1. 启动程序后,用户通过账号密码登录,然后打印商品列表. 2. 允许用户根据商品编号购买商品. 3. 用户选择商品后,检测余额是否足够,够就直接扣款,不够就提醒充值. 4. 可随时退出,退出 ...
- python3 练习题(用函数完成登录注册以及购物车的功能)
''' 用函数完成登录注册以及购物车的功能 作业需求: 1,启动程序,用户可选择四个选项:登录,注册,购物,退出. 2,用户注册,用户名不能重复,注册成功之后,用户名密码记录到文件中. 3,用户登录, ...
- python3 练习题(购物车)
'''购物车程序需求:1.启动程序后,让用户输入工资,然后打印商品列表2.允许用户根据商品编号购买商品3.用户选择商品后,检查余额是否够,够就直接扣款,不够就提醒4.用户可一直购买商品,也可随时退出, ...
- Python3学习之路~2.2 简单的购物车程序
程序:购物车程序 需求:启动程序后,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 代码 ...
随机推荐
- 「题目代码」P1029~P1033(Java)
1029 C基础-求解方程 import java.util.*; import java.io.*; import java.math.BigInteger; public class Main { ...
- redux使用过程中遇到的两个致命的关键点
一.在reducer中,返回的state必须是全新的对象,否则,redux不会执行listening方法,因为redux会认为state没有更新过,没必要重新渲染view. 出现问题的例子: cons ...
- 数据结构与算法之顺序栈C语言实现
顺序栈是一种特殊的顺序表,主要操作是入栈和出栈.将顺序表加一些特定限制,就成了顺序栈. 注: 1.顺序栈C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简 ...
- 学习bash——通配符与特殊符号
一.通配符 这是bash操作环境中一个非常有用的功能,这让我们使用bash处理数据就更方便了. 常用通配符如下: 符号 意义 * 代表0个到无穷多个任意字符 ? 代表一个任意字符 [] 代表一定有一个 ...
- python基础之删除文件及删除目录的方法
下面来看一下python里面是如何删除一个文件及文件夹的~~ 1 2 3 4 5 6 7 8 #首先引入OS模块 import os #删除文件: os.remove() #删除空目录: os.r ...
- C#中async和await用法
.net 4.5中新增了async和await这一对用于异步编程的关键字. async放在方法中存在await代码的方法中,await放在调用返回Task的方法前. class Class1 { pr ...
- Promise使用手册
导读 Promise问世已久, 其科普类文章亦不计其数. 遂本篇初衷不为科普, 只为能够温故而知新. 比如说, catch能捕获所有的错误吗? 为什么有些时候会抛出"Uncaught (in ...
- 整理base.css,重设浏览器样式
有的时候,可以把自己经常写的代码整理一下,分文别类,用的时候,拿过来直接用就可以了,可以节约很多时间,提高工作效率.所以,每个人都要有自己的代码库.点击下载 /* * @Author: liubeim ...
- 【题解】SDOI2018战略游戏
被CNST的大小卡了好久.一定要开到18呀…… 首先,遇到这种带各种各样环的图先考虑是不是可以建立圆方树,在圆方树上求出答案.然后转化为圆方树之后,我们就将图转化到了树上.答案非常的明显:只要一个圆点 ...
- [国家集训队]Crash的数字表格 / JZPTAB 莫比乌斯反演
---题面--- 题解: $$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}{\frac{ij}{gcd(i, j)}}$$ 改成枚举d(设n < m) $$ans ...