需求:

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作业:购物车程序的更多相关文章

  1. python基础day2作业:购物车

    #功能:1.可注册账号2.登录买家账号3.可查询编辑购物车里商品4.可以余额充值5.可提示余额不足6.购物车结算 #使用:1.第一次使用先注册账号填写账号金额2.账号金额信息保存在buyer_acco ...

  2. Python培训12期-day2作业-购物车

    #!/usr/bin/env python import sys import os import getpass 商品={ '图书': { "<Puppet实战>": ...

  3. python3.x Day2 购物车程序练习

    购物车程序: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4. ...

  4. Python初学者第十二天 购物车程序小作业

    12day 作业题目: 购物车程序 作业需求: 数据结构: goods = [ {"name": "电脑", "price": 1999}, ...

  5. Python3学习之路~2.2 简单的购物车程序

    程序:购物车程序 需求:启动程序后,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 代码 ...

  6. python第七天-作业[购物车]

    作业要示: 购物车程序:启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出 ...

  7. Python学习-购物车程序

    程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...

  8. 利用JSP编程技术实现一个简单的购物车程序

    实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...

  9. 简单购物车程序(Python)

    #简单购物车程序:money_all=0tag=Trueshop_car=[]shop_info={'apple':10,'tesla':100000,'mac':3000,'lenovo':3000 ...

随机推荐

  1. 在Oracle中恢复被DROP掉的表

    在Oracle中可能不小心会DROP掉一个表,如果没有定期做备份的话,将会带来很大的麻烦.如果有的情况下,每天的数据都很重要,而定期备份的周期又稍长,情况恐怕也不容乐观!以前只知道Windows有个回 ...

  2. git: fatal: Not a git repository (or any of the parent directories): .git

    在看书 FlaskWeb开发:基于Python的Web应用开发实战 时,下载完源码后 git clone https://github.com/miguelgrinberg/flasky.git 试着 ...

  3. C#中的 特性 详解(转载)

    本篇幅转载于:http://www.cnblogs.com/rohelm/archive/2012/04/19/2456088.html C#中特性详解 特性提供了功能强大的方法,用于将元数据或声明信 ...

  4. selenium page object & Page Factory

    package demo; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa ...

  5. 简化MSI在WIN10的安装

    这里给大家分享一个简化MSI安装的工具 InstallByDrag: 在win10系统中,通过双击方式打开 MSI 安装文件,可能被提示由于dll加载问题无法安装,这是由于没有使用管理员权限运行.而M ...

  6. SQL 统计两个表的数据,按同一日期分组

    思路:把两个表的数据按日期整合到临时表在按日期分组,求和. 例子: SELECT t.dateTime AS '日期',SUM(t.money) AS '表1利息',SUM(t.interest) A ...

  7. Java笔记:异常

    Exception 类的层次 所有的异常类是从 java.lang.Exception 类继承的子类. Exception 类是 Throwable 类的子类.除了Exception类外,Throwa ...

  8. 用 javassist 来修改 class 文件

    import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; public class Test { ...

  9. Oracl中sql书写技巧

    1.写脚本(1)为什么不直接设置回滚点?因为服务器上数据库是很多人使用的,所以除了自己操作外,有很多人操作.如果设置回滚点时,回滚后,很多人操作都消失了,因此savepoint不可以.但是可以自己书写 ...

  10. [转]IIS6.0迁移至IIS7.0

    原文地址:http://www.splaybow.com/post/iis-6.0-7.0.html 公司的项目需要迁移到IIS7的目标机器中 在此做记录 原来server 2003系统 迁到2008 ...