python写购物车小程序
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# @Author: Skyell Wang
# @Time : 2018/5/22 15:50 # 基础要求:
#
# 1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表
#
# 2、允许用户根据商品编号购买商品
#
# 3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
#
# 4、可随时退出,退出时,打印已购买商品和余额
#
# 5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
#
#
# 扩展需求:
#
# 1、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
#
# 2、允许查询之前的消费记录 import re
# 用户登录程序
flag = True
# 剩余钱数
left_saving = True
current_saving = 0
# 已有账号、密码
account_list = {'xiaopang': '', 'haohao': ''}
username = input('请输入您的用户名:').strip()
lock_name = open('lockname_list.txt', 'r', encoding="utf-8")
for i in lock_name:
lockname = i.strip()
if lockname == username:
print('您的账号已经被锁定!')
break
else:
continue
lock_name.close()
if username != lockname:
password_wrong = 0
while flag:
password = input('请输入密码:').strip()
# 利用列表生成式将账号信息存入列表中
acc_name = [keys for keys in account_list]
if username in acc_name:
# 判断账号、密码是否正确
if account_list[username] == password:
print('欢迎回来!')
flag = False # 判断与之前账号是否一致,如果一致则打印出之前的消费清单
list = open('shopping_list', 'r', encoding="utf-8")
if username in [i for i in list]:
with open('shopping_list', 'r', encoding="utf-8") as list:
print(list.read())
left_saving = False
# 取出文件中已消费后剩余金额,并将余额赋值给saving
with open('shopping_list', 'r', encoding="utf-8") as list:
an = [x for x in list]
bc = re.findall('\d+\d', an[1])
current_saving = bc[0]
list.close()
break
else:
print('密码错误,请重新输入!')
password_wrong += 1
# 密码错误3次,锁定用户
if password_wrong == 3:
print('您的账号已经被锁定!')
lock_name = open('lockname_list.txt', 'a+', encoding="utf-8")
# 将被锁定的账号写入锁定文件中
lock_name.write(username+'\n')
lock_name.close()
else:
print('该账号不存在')
flag = False
break # 购物车程序
product_list=[
('电脑', 1999),
('鼠标', 10),
('游艇', 20),
('美女', 998),
('房子', 8000), ]
if left_saving:
saving = input('请输入您的工资:')
else:
saving = str(current_saving)
shopping_car = []
if saving.isdigit():
saving = int(saving)
while True:
# 打印商品内容
for i, v in enumerate(product_list, 1):
print(i, '>>>>', v) # 引导用户选择商品
choice = input('选择购买商品编号[退出:q]:') # 验证输入是否合法
if choice.isdigit():
choice = int(choice)
if choice > 0 and choice <= len(product_list):
# 将用户选择商品通过choice取出来
p_item = product_list[choice-1] # 如果钱够,用本金saving减去该商品价格,并将该商品加入购物车
if p_item[1] < saving:
saving -= p_item[1] shopping_car.append(p_item) else:
print('\033[1;31;0m')
print('余额不足,还剩%s元'%saving)
print('\033[0m')
print(p_item)
else:
print('编码不存在')
elif choice == 'q':
print('\033[1;34;0m')
print('------------您已经购买如下商品----------------')
print('\033[0m')
# 循环遍历购物车里的商品,购物车存放的是已买商品
buy_list=[i for i in shopping_car]
print(buy_list)
# 将购买物品信息存入文件中
with open('shopping_list','w', encoding = "utf-8") as list:
list.write(str(buy_list)+'\n'+'您还剩:%s元钱' % saving + '\n' + username)
# 高亮显示所剩余额
print('\033[1;34;0m')
print('您还剩:%s元钱' % saving)
print('\033[0m') break
else:
print('invalid input')
python写购物车小程序的更多相关文章
- python编写购物车小程序
#练习#程序购物车#启动程序后,让用户输入工资, 然后打印商品列表,允许用户根据商品编号购买商品用户选择商品后 #检测余额是否够,够就直接扣款,不够就提醒可随时退出,退出时,打印已购买商品和余额 ...
- python 练习购物车小程序
# -*- coding:utf-8 -*- shp = [ ['iphone',5000], ['offee',35], ['shoes',800] ] pric_list = [] e = int ...
- python基础—购物车小程序练习
要求:顾客可以根据商品编号购买工资允许内的商品,购买完成后,打印购买列表. def main(): salary = input("what is your salary ?") ...
- python 购物车小程序
python 购物车小程序 功能要求:1.启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表2.允许用户根据商品编号购买商品3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4. ...
- [作业] Python入门基础---购物车小程序
1.购物车小程序: 1.1用户输入工资取60% 1.2打印输出商品菜单 1.3由用户输入数字选择 #__author:Mifen #date: 2018/11/27 # 购物车程序 #把工资作为账户的 ...
- 【Python精华】100个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...
- 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 ...
- 整理了适合新手的20个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...
随机推荐
- 并发编程的模型分类(转载于https://link.zhihu.com/?target=http%3A//www.54tianzhisheng.cn/2018/02/28/Java-Memory-Model/)强烈推荐!
在并发编程需要处理的两个关键问题是:线程之间如何通信 和 线程之间如何同步. 通信 通信 是指线程之间以何种机制来交换信息.在命令式编程中,线程之间的通信机制有两种:共享内存 和 消息传递. 在共享内 ...
- 【linux】Tomcat 安装
登录linux后,切换目录到 /usr/local cd /user/local 在/usr/local目录新建文件夹servers用于存放tomcat文件 mkdir servers 在文件夹ser ...
- [JOJZ]3855.选择困难症
[问题描述]又到吃饭时间,Polo 面对饭堂里琳(fei)琅(chang)满(keng)目(die)的各种食品,又陷入了痛苦的抉择中:该是吃手(jiao)打肉饼好呢,还是吃豆(cai)角(chong) ...
- 基于KVM的SRIOV直通配置及性能测试
SRIOV介绍.VF直通配置,以及包转发率性能测试 小慢哥的原创文章,欢迎转载 目录 ▪ 1. SRIOV介绍 ▪ 2. 环境说明 ▪ 3. 开启SRIOV ▪ 4. 生成VF ▪ 5. VF直通 ▪ ...
- [JZOJ5778]【NOIP提高A组模拟2018.8.8】没有硝烟的战争
Description 被污染的灰灰草原上有羊和狼.有N只动物围成一圈,每只动物是羊或狼.该游戏从其中的一只动物开始,报出[1,K]区间的整数,若上一只动物报出的数是x,下一只动物可以报[x+1,x+ ...
- 小工具---将图片文件MultipartFile保存到指定目录
import org.springframework.web.multipart.MultipartFile; import java.io.IOException; /** 保存图片 @author ...
- phpstorm安装步骤是什么?
phpstorm的安装及其激活教程 1.phpstorm安装步骤: (1)下载地址:http://www.jetbrains.com/phpstorm/ 根据自己电脑的32or64位下载,下载完后就是 ...
- Cocos Creator 中 _worldMatrix 到底是什么(中)
Cocos Creator 中 _worldMatrix 到底是什么(中) 1. 中篇摘要 在上篇中主要做了三件事 简单表述了矩阵的基本知识,以及需要涉及到的三角函数知识 推导了图形变换中 位移 .旋 ...
- 手动部署 Docker+Grafana+Prometheus系统监控之Redis
监控规划图 使用Docker 创建两台Redis docker run -d --name redis1 redis docker run -d --name redis2 redis 查看redis ...
- amoeba-mysql
配置完成后无法连接 Could not create a validated object, cause: ValidateObject failed 查看logs/下面的 messageHandle ...