Python3.5 Day2作业:购物车程序
需求:
1. 启动程序后,用户通过账号密码登录,然后打印商品列表。
2. 允许用户根据商品编号购买商品。
3. 用户选择商品后,检测余额是否足够,够就直接扣款,不够就提醒充值。
4. 可随时退出,退出时,打印已购买的商品和余额。
#!/usr/bin/env python
# -*- coding: utf-8 -*- count = 0 # 计数器
username = "aaa" # 登录用户名
userpassword = "asd" # 登录密码 #创建黑名单表
f=open('name.txt','a')
f.close()
#创建用户余额存放地址
f = open('salary.txt', 'a')
f.close() f = open("name.txt", "r")
file_list = f.readlines()
f.close() lock = []
name = input("登录用户名:") # 判断用户是否在黑名单
for i in file_list:
line = i.strip("\n")
lock.append(line)
if name in lock:
print("您的账号已锁定,请联系管理员。")
exit()
else:
# 如果用户没有在黑名单,判断用户是否存在。
if name == username:
# 如果密码连续输错三次,锁定账号。
while count < 3:
password = input("登录密码:")
if name == username and password == userpassword:
print("\033[92mWelcome to Mr.wang mall\033[0m")
break
else:
print("账号密码不匹配")
count += 1
if count ==3:
print("对不起,您的账号连续输错三次账号已锁定,请联系管理员。")
f = open("aaa.txt", "w+")
li = ['%s' % username]
f.writelines(li)
f.close()
exit()
else:
print("对不起,您的账号连续输错三次账号已锁定,请联系管理员。")
f = open("name.txt", "w+")
li = ['%s' % username]
f.writelines(li)
f.close()
else:
print("用户名不存在,请输入正确的用户名。")
exit() #用户购买商品列表
shopping_list = []
#用户购买物品名称存放列表
goods = []
#用户购买物品价格存放列表
price = []
#商品价格列表
product_list = [
['Iphone',5800],
['Mac Pro',9800],
['Bike',800],
['Watch',10600],
['Coffee',31],
['Alex Python',120],
] #读取用户的余额,如果首次登陆余额为0
f1 = open("salary.txt", "r")
file_list = f1.readlines()
f1.close()
salary = []
if file_list:
print("")
else:
f2 = open("salary.txt", "w")
f2.write("")
f2.close()
f1 = open("salary.txt", "r")
fil_list = f1.readlines()
f1.close()
for i in fil_list:
lin = i.strip("\n")
salary.append(lin) salary = int(salary[0]) #商品购买循环
while True:
#循环打印商品目录
for j in range(1):
print("----shopping list----")
for i,ele in enumerate(product_list):
print (i,ele[0],ele[1])
var = (input("\033[94m请输入你要买的商品序列号(充值:t 余额:b 购买:y 退出:q):\033[0m"))
#判断用户输入的是否为商品序号是否为数字
if var.isdigit():
var = int(var)
#判断用户输入的商品序号是否在范围内
if var >=0 and len(product_list) > var:
p = product_list[var]
#判断用户的余额是否足够买想要的商品
if p[1] <= salary:
shopping_list.append(p)
goods.append(p[0])
price.append(p[1])
salary = salary -p[1]
print("\033[94m您购买\033[0m\033[95m%s\033[0m\033[94m已加入购物车后,您的余额还有\033[0m\033[95m%s\033[0m"%(p[0],salary))
else:
print("\033[91m您的余额不足(余额:%s),请充值后购买(充值:t)。\033[0m"%salary)
else:
print("\033[91m没有找到您想要的商品,请重新输入商品编号。\033[0m")
continue
elif var == "t":
num1 = input("\033[94m请输入充值金额:\033[0m")
if num1.isdigit():
num1 = int(num1)
salary = salary + num1
print("您现在的总余额是:",salary)
else:
print("\033[91m请输入正确的充值金额\033[0m")
num1 = input("\033[94m请输入充值金额:\033[0m")
continue
elif var == "q":
exit()
elif var == "b":
print("\033[91m您当前余额为:%s\033[0m"%salary)
elif var == "y":
print("--------shopping list------")
goods.sort()
s = set(goods)
for item in s:
print (" %s x %d"%(item,goods.count(item)))
sum = 0
for j in price:
sum = sum +j
print("您总计消费:\033[95m % s\033[0m余额:\033[95m % s\033[0m"%(sum,salary))
print("\033[94m欢迎您下次购物\033[0m")
f = open("salary.txt", "w+")
la = ['%s' %salary]
f.writelines(la)
f.close()
exit()
else:
print("\033[91m请输入正确的商品编号。\033[0m")
continue
Python3.5 Day2作业:购物车程序的更多相关文章
- python基础day2作业:购物车
#功能:1.可注册账号2.登录买家账号3.可查询编辑购物车里商品4.可以余额充值5.可提示余额不足6.购物车结算 #使用:1.第一次使用先注册账号填写账号金额2.账号金额信息保存在buyer_acco ...
- Python培训12期-day2作业-购物车
#!/usr/bin/env python import sys import os import getpass 商品={ '图书': { "<Puppet实战>": ...
- python3.x Day2 购物车程序练习
购物车程序: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4. ...
- Python初学者第十二天 购物车程序小作业
12day 作业题目: 购物车程序 作业需求: 数据结构: goods = [ {"name": "电脑", "price": 1999}, ...
- Python3学习之路~2.2 简单的购物车程序
程序:购物车程序 需求:启动程序后,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 代码 ...
- python第七天-作业[购物车]
作业要示: 购物车程序:启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出 ...
- Python学习-购物车程序
程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...
- 利用JSP编程技术实现一个简单的购物车程序
实验二 JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...
- 简单购物车程序(Python)
#简单购物车程序:money_all=0tag=Trueshop_car=[]shop_info={'apple':10,'tesla':100000,'mac':3000,'lenovo':3000 ...
随机推荐
- ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)
//匈牙利算法-DFS //求最小点覆盖集 == 求最大匹配 //Time:0Ms Memory:208K #include<iostream> #include<cstring&g ...
- 高可用thrift客户池的实现详解
最近,公司要求将组内的thrift客户端组件推广至公司内使用.基本的要求如下: 1.高可用 2.集成名称服务,也就配置文件支持服务发现 3.解耦,客户端和高可用组件解耦,简单来说就是,如果以后要切换其 ...
- oracle打补丁
oracle 数据库补丁安装(单实例) ------------24006111 注:务必先安装24006111再安装24315821,否则无法进行正常的补丁安装流程.1.关闭数据库监听和数据库实例 ...
- 基于SSM的租赁管理系统0.1_20161225_项目需求
基于SSM的汽车租赁系统项目计划书 1.产品定位 本系统供提供租赁服务的企业内部使用,供企业员工进行线下操作. 2.需求分析 2.1 能为工作人员提供员工信息的管理功能,具有RBAC基于角色的权限管理 ...
- svn上传工程之后下载,打开下载之后的工程缺少文件
当我们把iOS的工程上传到SVN中,当我们再从SVN中下载下来,就会出现错误,这是什么原因呢?我这里出现的错误是找不到文件,后来知道原来是被屏蔽掉了,就是上传的时候不上传某个类型的文件.例如我出错就是 ...
- gl.h报错
以下内容摘自:http://blog.csdn.net/kaphen/article/details/24721999 头文件只有#include <gl\gl.h> //OpenGL H ...
- 一键启动NameNode和DataNode--shell脚本
使用shell脚本,一键启动hadoop中的NameNode和DataNode.分为普通版和装逼版.装逼版较普通版多了很多判断和信息提示,当然主要还是为了我联系shell脚本而写的. 如果想实现复用, ...
- SQL SERVER中如何在声明游标的语句中,用变量做表名
-- 因为定义游标所用的表名是变量,所以采用EXEC(定义语句) 的方式来声明游标set @StrSql='DECLARE Ba_Cursor CURSOR FOR (SELECT a.PhoneId ...
- 阿里云centos7基于搭建VPN
本文参考自:http://www.xxkwz.cn/1495.html 前段时间使用pptp搭建了一个VPN,速度很快,但是用了大概一个月挂了,估计是被墙了吧,于是,用shadowsocks重新搭建了 ...
- C#中的扩展方法
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 以上是msdn官网对扩展方 ...