我这里的购物车的大概内容是:

      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编写脚本之--------购物车的更多相关文章

  1. python3编写发送四种http请求的脚本

    python3编写发送http请求的脚本 使用requests包: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html ...

  2. 使用 Python 编写脚本并发布

    使用 Python 编写脚本并发布 P1: 脚本 通常在 Linux 服务器上会遇到在命令行中输入命令的操作,而有些操作包含的命令数目较多或者其中的命令包含的参数较多,如果一个一个的敲命令的话就太麻烦 ...

  3. [译]Godot系列教程四 - 编写脚本

    编写脚本(Scripting) 简介 关于无需编程即可创建视频游戏的那些工具的谈论有很多.不用学习编程知识对很多独立开发者来说就是一个梦想.这种需求 - 游戏开发者.甚至在很多公司内部,希望对游戏流程 ...

  4. 【转】PowerShell入门(十一):编写脚本模块

    转至:http://www.cnblogs.com/ceachy/archive/2013/03/08/PowerShell_Script_Module.html 现在通过编写模块就可以在PowerS ...

  5. Jmeter脚本录制方法(二)——手工编写脚本(jmeter与fiddler结合使用)

    jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...

  6. Linux shell编写脚本部署pxe网络装机

    Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机  https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...

  7. 编写脚本实现DHCP服务与DHCP中继自动化执行

    编写脚本实现DHCP服务与DHCP中继自动化执行 本脚本是在liunx搭建DHCP服务器以及DHCP中继服务器实验环境下实现的https://www.cnblogs.com/yuzly/p/10539 ...

  8. Jmeter脚本录制方法(二)手工编写脚本(jmeter与fiddler结合使用)

    jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...

  9. linux编写脚本检测本机链接指定IP段是否畅通

    linux编写脚本检测本机链接指定IP段是否畅通,通过ping命令检测指定IP,检测命令执行结果,若为0表示畅通,若为1表示不通,以此判断网络是否畅通,但是指定机器禁用ping命令除外.代码如下: # ...

随机推荐

  1. httpclient使用head添加cookie

    最近在使用接口时候,我使用get请求时,需要携带登录态,所以在get请求的时候我需要在head里面把cookie给加上,添加方式get和post完全不一样 Post方式添加cookie httpPos ...

  2. POJ-2513 Colored Sticks---欧拉回路+并查集+字典树

    题目链接: https://vjudge.net/problem/POJ-2513 题目大意: 给一些木棍,两端都有颜色,只有两根对应的端点颜色相同才能相接,问能不能把它们接成一根木棍 解题思路: 题 ...

  3. POJ-3009 Curling 2.0---DFS求最短路

    题目链接: https://vjudge.net/problem/POJ-3009 题目大意: 问题:打冰球.冰球可以往上下左右4个方向走,只有当冰球撞到墙时才会停下来,而墙会消失.当冰球紧贴墙时,不 ...

  4. 20145238-荆玉茗 《Java程序设计》第四次实验报告

    20145238<Java程序设计>第四次实验报告 实验四 Android环境搭建 实验内容 1.搭建Android环境 2.运行Android 3.修改代码,能输出学号 实验步骤 搭建A ...

  5. paper-list

    1.yolo-v1,yolo-v2,yolo-v3 2.ssd,focal loss,dssd 3.fast-rcnn,faster-rcnn,r-fcn,Light-Head R-CNN,R-FCN ...

  6. Real VNC软件

    RealVNC5.2.3+key http://yunpan.cn/cjchAkeIgEAPG (提取码:4092)

  7. HttpContext.RewritePath

    定义:使用给定路径重写 URL.就是可以跳转到指定的URL. 也可以做为伪静态的跳转.具体如下. 他的重载 ①新建一个页面,放两个链接到另一个页面,注意给的链接 ②在 global.asax 文件中 ...

  8. Java Web入门经典扫描版

    全书共分4篇19章,其中,第一篇为“起步篇”,主要包括开启JavaWeb之门.不可不知的客户端应用技术.驾驭JavaWeb开发环境.JavaWeb开发必修课之JSP语法等内容:第二篇为“核心篇”,主要 ...

  9. Github学生包的申请

    Github Education为了大学生们更好的进行开发,进行边做边学,与一些合作伙伴和朋友一起创建GitHub学生开发者包. 里面内容非常丰富,应有尽有: AWS 亚马逊云服务 $75-$150  ...

  10. P2661 信息传递 DFS

    题目链接:洛谷 P2661 信息传递 一个人要想知道自己的生日,就意味着信息的传递是成环的,因为每轮信息只能传递一个人,传递的轮数就等于环的大小 环的大小就等于环中的两个点到第三个点的距离之和加一,我 ...