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] ...
随机推荐
- netty源码解解析(4.0)-23 ByteBuf内存管理:分配和释放
ByteBuf内存分配和释放由具体实现负责,抽象类型只定义的内存分配和释放的时机. 内存分配分两个阶段: 第一阶段,初始化时分配内存.第二阶段: 内存不够用时分配新的内存.ByteBuf抽象层没有定义 ...
- windows下安装和设置gradle
一.安装前检查 检查jdk是否已经安装 二.下载gradle 1. https://gradle.org/releases/ 2.设置gradle环境变量 3. 环境变量中增加名为GRADLE_HOM ...
- 软件开发工具(第12章: CVS的安装及使用)
一.CVS介绍 并发版本系统(Concurrent Versions System——CVS)是一个常用 的代码版本控制系统. 使用CVS可以对代码进行集中管理,记录代码所有的更改历史,提供 协作开发 ...
- Coins POJ - 1742
给出硬币面额及每种硬币的个数,求从1到m能凑出面额的个数. Input 多组数据,每组数据前两个数字为n,m.n表示硬币种类数,m为最大面额,之后前n个数为每种硬币的面额,后n个数为相应每种硬币的个数 ...
- python pip源安装模块的一些常见问题
刷bugku的web时需要用python写脚本,web方面需要安装对应的模块,下面就分享一下我在安装模块时碰到的一些问题以及解决方法 首先找到pip文件所在的位置 打开cmd,cd文件位置,打开文件夹 ...
- Java基础之集合框架(Collection接口和List接口)
首先我们说说集合有什么作用. 一.集合的作用 1.在类的内部,对数据进行组织: 2.简单而快速的搜索大数量的条目: 3.有的集合接口,提供一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关 ...
- MySQL 数据库的设计规范
网址 :http://blog.csdn.net/yjjm1990/article/details/7525811 1.文档的建立日期.所属的单位.2.数据库的命名规范.视图.3.命名的规范:1)避免 ...
- TensorFlow2.0(8):误差计算——损失函数总结
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- std::tuple
tuple,元组类型.头文件<tuple>,tuple是一个固定大小的不同类型(异质,heterogeneous)值的集合(这一点是tuple与其他常规STL容器的最大不同,即它可以同时存 ...
- DES算法与四种加密模式的代码实现(C++语言)
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Love_Irelia97/article/ ...