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] ...
随机推荐
- Spring Boot 2.x 基础案例:整合Dubbo 2.7.3+Nacos1.1.3(最新版)
1.概述 本文将介绍如何基于Spring Boot 2.x的版本,通过Nacos作为配置与注册中心,实现Dubbo服务的注册与消费. 整合组件的版本说明: Spring Boot 2.1.9 Dubb ...
- [以太坊源代码分析] I.区块和交易,合约和虚拟机
最近在看以太坊(Ethereum)的源代码, 初初看出点眉目. 区块链是近年热点之一,面向大众读者介绍概念的文章无数,有兴趣的朋友可自行搜索.我会从源代码实现入手,较系统的介绍一下以太坊的系统设计和协 ...
- 关于MySQL退出命令,还有你不知道的一种操作
前两天再进MySQL窗口的时候,手快点了一个 ' ,并且按下了enter键,于是就出现了这种情况, 然后就退不出来了,为此我还特意上网查了一下,最后的结果基本上都是只能关闭MySQL 重新进入. 因为 ...
- (4)一起来看下mybatis框架的缓存原理吧
本文是作者原创,版权归作者所有.若要转载,请注明出处.本文只贴我觉得比较重要的源码,其他不重要非关键的就不贴了 我们知道.使用缓存可以更快的获取数据,避免频繁直接查询数据库,节省资源. MyBatis ...
- mac下的环境变量
a. /etc/profile b. /etc/paths c. ~/.bash_profile d. ~/.bash_login e. ~/.profile f. ~/.bashrc 其中a和b是系 ...
- python编程基础之八
位运算符 内存: 1 bit ----b 1Byte----B 1Byte = 8bit 1K = 1024Byte 1M = 1024KB 1G = 1024M 1T = 1024G 二级 ...
- 深入理解Netty框架
前言 本文讨论的主题是Netty框架,本着3W原则 (What 是什么?->Why 为什么?->How 如何做?)来一步步探究Netty原理和本质以及运用场景. 了解基本名词 1.BIO. ...
- PhpSpreadsheet 导出特定格式 — 广告请款单
需求说明 最近需要实现一个导出这种格式的Excel表单,之前都有用过导出Excel的功能,但大都是表头+数据的形式,只用于获取数据,没有太多样式要求,不用合并单元格.合并居中等,也不用对每一行数据特异 ...
- Django-debug-toolbar(调试使用)
Django-debug-toolbar django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息. https: ...
- postman全局变量设置
1.点击小齿轮进入到变量添加页面,点击Globals添加全局变量 2.输入变量名称和变量值 3.接口中设置变量