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] ...
随机推荐
- 集合线性表--List之ArrayList
集合操作——线性表 List: add().remove().subList().list.toArray().array.asList(). List排序: Collections.sort(li ...
- Spring Cloud Feign 性能优化
#### 1.替换 tomcat 首先,把 tomcat 换成 undertow,这个性能在 Jmeter 的压测下,undertow 比 tomcat 高一倍 **第一步,pom 修改去除tomca ...
- Hadoop-2.7.3-本地模式安装-wordcount例子
准备虚拟机:linux-rhel-7.4-server,由于不使用虚拟机进行联网,所以选择host-only网络模式.此处,需要再VitralBox的管理菜单中的主机网络管理器新建一个虚拟网卡.安装完 ...
- 数据表管理admin
知识预览 admin组件使用 admin源码解析 回到顶部 admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你 ...
- Java8 Period.between方法坑及注意事项
在使用Java8 新特性中关于Period.between的方法时需注意该方法获取日期的区间问题. @Test public void test1(){ LocalDate from = LocalD ...
- mpvue 图片上传预览组件封装
<template> <div class="j-pic-upload"> <div class="j-upload-btn" @ ...
- ubuntu14.04 安装tensorflow始末
基于ubuntu14.04 干净的系统一步步遇到的坑记录下来: 怀着平静学习的心情,问题总的能解决的! 1. 首先看了下当前python版本 python --version Python 2.7.6 ...
- 各种常见文件的hex文件头
我们在做ctf时,经常需要辨认各种文件头,跟大家分享一下一些常见的文件头. 扩展名 文件头标识(HEX) 文件描述 123 00 00 1A 00 05 10 04 Lotus 1-2-3 spr ...
- golang初探与命令源码分析
前段时间有群友在群里问一个go语言的问题: 就是有一个main.go的main函数里调用了另一个demo.go里的hello()函数.其中main.go和hello.go同属于main包.但是在mai ...
- SVM面试知识点总结
1. SVM 原理 SVM 是一种二类分类模型.它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况(不加核函数的话就是个线性模型,加了之后才会升级为一个非线 ...