python 购物车小程序
python 购物车小程序
功能要求:
1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中,
关键输出,如余额,商品已加入购物车等消息,需高亮显示 一、思路导图

二、代码实现
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# Author: davie
"""
功能要求:
1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中,
关键输出,如余额,商品已加入购物车等消息,需高亮显示
"""
product_list = [
{"name":"电脑","price": 1999},
{"name":"鼠标","price": 10},
{"name":"游艇","price": 20},
{"name":"美女","price": 998},
{"name":"watch","price":10600},
{"name":"iphone","price":8800},
{"name":"mac pro","price":14000}
]
shopping_list = []
username = 'davie'
password= 'davie123'
user_info = {"username":"davie","password":"davie123","salary":30000}
print("----------欢迎登陆----------")
_username = input("请输入您的用户名: ").strip()
_password = input("请输入您的密码: ").strip()
if _username == user_info["username"] and _password == user_info["password"]:
salary = input("请输入你的薪资: ").strip()
if salary.isdigit():
salary = int(salary)
while True:
print("---------商品列表--开始------------")
for idx, item in enumerate(product_list):
print(idx, item)
print("---------商品列表--结束------------")
user_choice = input("请输入选择商品编号,输入q退出: ")
if user_choice.isdigit():
user_choice = int(user_choice)
if user_choice >=0 and user_choice<len(product_list):
p_item = product_list[user_choice]
if p_item["price"] <= salary:
shopping_list.append(p_item)
salary -= p_item["price"]
print("已经将%s添加到您的购物车了,你的余额是 \033[0;31m%s\033[0m元"%(p_item,salary))
else:
print("你的余额还剩下: \033[31m%s\033[0m元; 无法购买:%s; "%(salary,p_item),'还差: \033[0;31m%s\033[0m元'%(p_item["price"]-salary))
else:
print("\033[31m你选择的商品不存在!\033[0m,请重新选择: ")
if user_choice == "q" or user_choice == "Q":
print("\033[31m你选择了退出...\033[0m")
print("------------\033[34m你已经购买了如下商品-开始\033[0m-------------")
for idx, shopping_good in enumerate(shopping_list):
print(idx, shopping_good)
print("你当前的余额为:\033[36m%s元\033[0m" % (salary))
print("------------\033[34m你已经购买了如上商品-结束\033[0m-------------")
exit("已结束...")
elif user_choice == "q" or user_choice == "Q":
print("\033[31m你选择了退出...\033[0m")
print("------------\033[34m你已经购买了如下商品-开始\033[0m-------------")
for idx, shopping_good in enumerate(shopping_list):
print(idx, shopping_good)
print("你当前的余额为:\033[36m%s元\033[0m" % (salary))
print("------------\033[34m你已经购买了如上商品-结束\033[0m-------------")
exit("已结束...")
else:
print("你输入的参数无效,已结束!")
print("------------\033[34m你已经购买了如下商品-开始\033[0m-------------")
for idx, shopping_good in enumerate(shopping_list):
print(idx, shopping_good)
print("你当前的余额为:\033[36m%s元\033[0m" % (salary))
print("------------\033[34m你已经购买了如上商品-结束\033[0m-------------")
break
else:
print("\033[0;31m对不起,登陆失败!\033[0m")
python 购物车小程序的更多相关文章
- python 购物车小程序(列表、循环、条件语句)
goods = [ ['iphone6s', 5800], ['mac book', 9000], ['coffee', 32], ['python book', 80], ['bicyle', 15 ...
- 第五篇:python购物车小程序开发demo
功能:自定义工资水平,可选商品加购余额实时提醒用到的知识点:列表.if多分支.循环.高亮输出未解决bug删除商品后不能自动退出 代码如下: if shopping_list: shopping_lis ...
- [作业] Python入门基础---购物车小程序
1.购物车小程序: 1.1用户输入工资取60% 1.2打印输出商品菜单 1.3由用户输入数字选择 #__author:Mifen #date: 2018/11/27 # 购物车程序 #把工资作为账户的 ...
- python3 购物车小程序,余额写入文件保存
python3 购物车小程序,余额写入文件保存 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan goods = ( ...
- Day2:购物车小程序
一.购物车小程序第一版 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan product_list = [ (&quo ...
- python购物车小案例
python购物车小案例# 案列描述:有一个小型水果店里面有水果(苹果:¥8/kg,香蕉:¥5/kg,芒果:¥15/kg,葡萄:¥12/kg),客户带了100元钱进店选购水果.# 1.客户输入相应序号 ...
- 一个python爬虫小程序
起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...
- appium+python 微信小程序的自动化
sudo kill -9 $(lsof -i:8889 -t) mitmweb -p 8889 -s addons.py mitmdump -q -p 8889 -s addons.py http: ...
- Python基本小程序
目录 Python基本小程序 一.筛选从1-100所有的奇数 二.筛选从0-100所有的偶数 三.求1-100之间所有的偶数和,奇数和 四.三个数由小到大输出 五.四个数字重复数字的三位数 Pytho ...
随机推荐
- Previous Workflow Versions in Nintex Workflow
Previous Workflow Versions in Nintex Workflow September 4, 2013 It occurred to me that even though I ...
- 搭建Hexo博客(四)-设置
1.主题 比较流行的是yilia,下载主题到theme目录即可.再根据说明文档进行设置. 2.图片发布 source下创建的目录,并且目录下有文件,则文件会被生成到post目录中.图片可以放在这里.既 ...
- hosts学习整理
hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库” (测试发现,对于https 协议的网站无效,果然https还是有作用的,不会被屏蔽) ...
- try-with-resource机制的一个编译陷阱
为了解决问题,偶然发现一个奇怪的地方:就是使用try-with-resource机制的代码编译后,使用jd-gui反编译文件出现// ERROR //,但是程序运行却是正常的. 进一步确认后发现:如果 ...
- MT【311】三角递推数列
已知数列$\{a_n\}$满足$a_1=\dfrac{1}{2},a_{n+1}=\sin\left(\dfrac{\pi}{2}a_n\right),S_n$ 为$\{a_n\}$的前$n$项和,求 ...
- 【POJ 1001】Exponentiation (高精度乘法+快速幂)
BUPT2017 wintertraining(15) #6A 题意 求\(R^n\) ( 0.0 < R < 99.999 )(0 < n <= 25) 题解 将R用字符串读 ...
- LGP2801 教主的魔法
题目链接 : P2801 教主的魔法 这是第一次A分块的题 就是模板题了 每个块内排序 每个整块仅需维护整块的修改量 询问操作: 对于边缘块 直接暴力找在[l, r]内 且比给定值大的有几个 对于整块 ...
- LOJ #2537. 「PKUWC 2018」Minimax (线段树合并 优化dp)
题意 小 \(C\) 有一棵 \(n\) 个结点的有根树,根是 \(1\) 号结点,且每个结点最多有两个子结点. 定义结点 \(x\) 的权值为: 1.若 \(x\) 没有子结点,那么它的权值会在输入 ...
- iptables(2)
MASQUERADE同样是做源地址转换,只不过防火墙会根据该策略自动查找可用的公网IP地址,适应变化的情况•若接口使用ppp+,表示匹配ppp0.ppp1……中任意可用的拨号连接•若需要演示操作,可以 ...
- Nginx log日志切割shell
#!/bin/bash#此脚本用于自动分割Nginx的日志,包括access.log和error.log#每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-xx- ...