python3编写脚本之--------购物车
我这里的购物车的大概内容是:
1.首先要知道商品的有什么东西可卖,需要多少钱。
2.买家准备花多少钱去购物商品,购买的商品先放在购物车里。
3.最后买家还可以是否确定购买购物车的东西,还剩多少钱。
编写的脚本如下:
#!/usr/bin/env python
# encoding: utf-8 #能购买的商品的东西
goods = [
["一本书", 40], ["牙膏", 3], ["牙刷", 5], ["自行车", 200], ["手表", 100],
["面膜", 10], ["哇哈哈", 5], ["卫龙", 2], ["果冻", 23], ["水饺", 12], ["姨妈巾", 5],
] #输入你准备用多少钱去购买商品,并判断输入的是否是数字。
flag = True
while flag:
salary = input("\033[1;34;40m请输入准备花多少钱去购物: ")#\033[显示方式;前景色;背景色m + 结尾部分:\033[0m
if salary.isdigit():
salary = int(salary)
cash = salary
break
else:
print("输入的金额方式不对,请正确输入的数字:") #先建一个购物车空列表
shopping_cart = [] #下面是想把购买的商品放入购物车中。
while flag:
for i,v in enumerate(goods, 1):#enumerate函数打印时,内容前面有编号,后面的参数1的意思是从1开始编号。
print("\033[0m \033[0;32;40m",i,"\t",v,"\033[0m")
select_num = input("\033[1;34;40m请选择您需要购买的商品(输入编号即可,输入'q'即可退出): ")
if select_num.isdigit():
select_num = int(select_num)
if select_num > 0 and select_num <= len(goods):
if salary >= goods[select_num-1][1]:
shopping_cart.append(goods[select_num - 1])
salary -= goods[select_num-1][1]
else:
print("\033[5;35;47m余额不足。。。剩余:%f\033[0m" % salary) else:
print("\033[5;35;47m没有你想要的商品编号,请重新输入编号,谢谢!\033[0m")
elif select_num == 'q':
break
else:
print("\033[5;35;47m您输入的内容不正确,请重新输入编号!\033[0m") #打印购物车里的东西,并判断确定是否购买
print("\033[0m \033[1;31;40m----------------购物车的清单-------------------\033[0m")
shopping_cart_norepeat = []
for trade in shopping_cart:
if trade not in shopping_cart_norepeat:
shopping_cart_norepeat.append(trade) for commodity in shopping_cart_norepeat:
n = shopping_cart.count(commodity)
print("\033[1;32;40m",commodity[0],"-----",n,"件-----",commodity[1]*n,"元\033[0m") #确定是否购买商品。
sure = input("\033[4;31;40m你确定购买吗?(y/n) ")
if sure == 'y':
print("\033[0m \033[5;32;40m你已经购买了以上的商品。剩余金额为:%f元\033[0m" % salary)
else:
print("\033[0m \033[5;32;40m你没购买的以上商品,剩余金额不变: %f元\033[0m" % cash)
下面结果是一个例子:
请输入准备花多少钱去购物: 200
1 ['一本书', 40]
2 ['牙膏', 3]
3 ['牙刷', 5]
4 ['自行车', 200]
5 ['手表', 100]
6 ['面膜', 10]
7 ['哇哈哈', 5]
8 ['卫龙', 2]
9 ['果冻', 23]
10 ['水饺', 12]
11 ['姨妈巾', 5]
请选择您需要购买的商品(输入编号即可,输入'q'即可退出): 1
1 ['一本书', 40]
2 ['牙膏', 3]
3 ['牙刷', 5]
4 ['自行车', 200]
5 ['手表', 100]
6 ['面膜', 10]
7 ['哇哈哈', 5]
8 ['卫龙', 2]
9 ['果冻', 23]
10 ['水饺', 12]
11 ['姨妈巾', 5]
请选择您需要购买的商品(输入编号即可,输入'q'即可退出): 1
1 ['一本书', 40]
2 ['牙膏', 3]
3 ['牙刷', 5]
4 ['自行车', 200]
5 ['手表', 100]
6 ['面膜', 10]
7 ['哇哈哈', 5]
8 ['卫龙', 2]
9 ['果冻', 23]
10 ['水饺', 12]
11 ['姨妈巾', 5]
请选择您需要购买的商品(输入编号即可,输入'q'即可退出): 4
余额不足。。。剩余:120.000000
1 ['一本书', 40]
2 ['牙膏', 3]
3 ['牙刷', 5]
4 ['自行车', 200]
5 ['手表', 100]
6 ['面膜', 10]
7 ['哇哈哈', 5]
8 ['卫龙', 2]
9 ['果冻', 23]
10 ['水饺', 12]
11 ['姨妈巾', 5]
请选择您需要购买的商品(输入编号即可,输入'q'即可退出): 6
1 ['一本书', 40]
2 ['牙膏', 3]
3 ['牙刷', 5]
4 ['自行车', 200]
5 ['手表', 100]
6 ['面膜', 10]
7 ['哇哈哈', 5]
8 ['卫龙', 2]
9 ['果冻', 23]
10 ['水饺', 12]
11 ['姨妈巾', 5]
请选择您需要购买的商品(输入编号即可,输入'q'即可退出): 7
1 ['一本书', 40]
2 ['牙膏', 3]
3 ['牙刷', 5]
4 ['自行车', 200]
5 ['手表', 100]
6 ['面膜', 10]
7 ['哇哈哈', 5]
8 ['卫龙', 2]
9 ['果冻', 23]
10 ['水饺', 12]
11 ['姨妈巾', 5]
请选择您需要购买的商品(输入编号即可,输入'q'即可退出): q
----------------购物车的清单-------------------
一本书 ----- 2 件----- 80 元
面膜 ----- 1 件----- 10 元
哇哈哈 ----- 1 件----- 5 元
你确定购买吗?(y/n) y
你已经购买了以上的商品。剩余金额为:105.000000元
python3编写脚本之--------购物车的更多相关文章
- python3编写发送四种http请求的脚本
python3编写发送http请求的脚本 使用requests包: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html ...
- 使用 Python 编写脚本并发布
使用 Python 编写脚本并发布 P1: 脚本 通常在 Linux 服务器上会遇到在命令行中输入命令的操作,而有些操作包含的命令数目较多或者其中的命令包含的参数较多,如果一个一个的敲命令的话就太麻烦 ...
- [译]Godot系列教程四 - 编写脚本
编写脚本(Scripting) 简介 关于无需编程即可创建视频游戏的那些工具的谈论有很多.不用学习编程知识对很多独立开发者来说就是一个梦想.这种需求 - 游戏开发者.甚至在很多公司内部,希望对游戏流程 ...
- 【转】PowerShell入门(十一):编写脚本模块
转至:http://www.cnblogs.com/ceachy/archive/2013/03/08/PowerShell_Script_Module.html 现在通过编写模块就可以在PowerS ...
- Jmeter脚本录制方法(二)——手工编写脚本(jmeter与fiddler结合使用)
jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...
- Linux shell编写脚本部署pxe网络装机
Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机 https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...
- 编写脚本实现DHCP服务与DHCP中继自动化执行
编写脚本实现DHCP服务与DHCP中继自动化执行 本脚本是在liunx搭建DHCP服务器以及DHCP中继服务器实验环境下实现的https://www.cnblogs.com/yuzly/p/10539 ...
- Jmeter脚本录制方法(二)手工编写脚本(jmeter与fiddler结合使用)
jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...
- linux编写脚本检测本机链接指定IP段是否畅通
linux编写脚本检测本机链接指定IP段是否畅通,通过ping命令检测指定IP,检测命令执行结果,若为0表示畅通,若为1表示不通,以此判断网络是否畅通,但是指定机器禁用ping命令除外.代码如下: # ...
随机推荐
- Graylog安装操作
Graylog安装操作 实验环境centos7.5系统 mem:4-8G disk:50G 关闭selinux以及firewalld 一.准备环境 1.1.java环境 下载java的j ...
- Spring boot 集成三种拦截方式
三种拦截方式分别为: javax.servlet.Filter org.springframework.web.servlet.HandlerInterceptor org.aspectj.lang. ...
- CentOS 7与 Windows双系统丢失Windows启动项及默认启动项修改
1.Windows启动项消失的原因: 在安装Win7.8/10系统+CentOS7双系统后,默认会将mbr(Main Boot Record)改写为grub2,默认的CentOS7无法识别Wind ...
- node-inspector调试工具使用方法
开发node.js程序使用的是javascript语言,其中最麻烦的还是调试,这里介绍一下node-inspector使用方法.具体资料可以看参考资料中的GITHUB文档. 工具/原料 node. ...
- 第33题:LeetCode255 Verify Preorder Sequence in Binary Search Tree 验证先序遍历是否符合二叉搜索树
题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 考点 1.BST 二叉搜索树 2.递归 思路 1.后序 ...
- 【杂题总汇】HDU多校赛第十场 Videos
[HDU2018多校赛第十场]Videos 最后一场比赛也结束了…… +HDU传送门+ ◇ 题目 <简要翻译> 有n个人以及m部电影,每个人都有一个快乐值.每场电影都有它的开始.结束时间和 ...
- 转:比较spring cloud和dubbo,各自的优缺点是什么
原文:https://blog.csdn.net/u010664947/article/details/80007767 dubbo由于是二进制的传输,占用带宽会更少 springCloud是http ...
- 搭建Maven私有仓库
Nexus官网下载:Nexus Repository Manager OSS :https://www.sonatype.com/download-oss-sonatype 1.解压 $ tar -z ...
- JAVA / MySql 编程——第五章 事务、视图、索引、备份和恢复
1.事务(Transaction): 事务是将一系列数据操作绑成一个整体进行统一管理. 如果一事务执行成功,则咋子该事务中进行的所有数据更改均会提交,称为数据库中的永久成部分. 如果事务执行是遇到错误 ...
- nginx配置安装
先安装pcrepcre作用是让Nginx支持Rewrite功能下载地址:https://sourceforge.net/projects/pcre/files/pcre/,选择最新版本进行下载下载之后 ...