python 购物车+用户认证程序
创建文件a.txt,b.txt.c.txt用于存放应该持续保存的信息
a.txt :用户密码输入错误3次就锁定
b.txt :购物时的活动,每个用户只能参与一次
c:txt :购物完后的发票在这里查看
购物车程序:
- ready =
- salary = input("how much is you salary:")
- out =
- #count =
- if salary.isdigit():
- salary = int(salary)
- else:
- exit("input string not digital....exit")
- list = [["精选猪肉3斤", ], ["牛肉3斤", ], ["鸡肉三斤", ]]
- shoppingcar = []
- while True:
- print("----------------------------------------------------------------------------")
- print("Welcome to xiaodai store")
- print("\033[31;1m目前正在做活动,购买商品满500的话就赠送一个精美的杯子哦!!!(超市内按h咨询)每人限1次 \033[0m")
- for i in enumerate(list):
- info_l = i[]
- info_n = i[][]
- info_m = i[][]
- print(info_l, info_n, info_m)
- user_c = input("please input your choose(h/help):")
- if user_c.isdigit():
- user_c = int(user_c)
- if user_c < len(list) and user_c >= :
- user_c = int(user_c)
- money = list[user_c][]
- shoppingcar_1 = list[user_c]
- ready = ready + money
- if salary >= money:
- shoppingcar.append(shoppingcar_1)
- print(shoppingcar_1, "add in then shoppingcar.....")
- salary -= money
- else:
- print(" ----------------------")
- print("|your money not enough:|", salary)
- print(" ----------------------")
- else:
- print("没有这个商品编号")
- elif user_c == "h" or user_c == help or user_c == "H":
- print("q/quit quit store")
- print("c/check check shopping car and salary")
- print("0-2 choice of goods")
- print("购买完商品后,输入[F]键来参加活动(满500赠送精美杯子)")
- print("l/list 查看发票,购买完并退出超市后才能通过此方法看到发票")
- elif user_c == "q" or user_c == "quit" or user_c == "Q":
- print("your shoppingcar:", shoppingcar)
- print("Be left over how much money:", salary)
- time_1 = '%Y-%m-%d-%X'
- time_2 = time.strftime(time_1)
- with open('b.txt', 'a', encoding='utf-8') as f2:
- f2.write("发票:%s用户 在 %s 购买了 %s 共消耗%s 元 \n" %(username,time_2,shoppingcar,ready))
- exit("quit....")
- elif user_c == 'l'or user_c =='list':
- with open('b.txt','r+',encoding='utf-8')as f3:
- print(f3.read())
- elif user_c == "c" or user_c == "check" or user_c == "C":
- print("Be left over how much money:", salary)
- print(shoppingcar)
- elif user_c == "f" or user_c == "F":
- if ready >= :
- with open('c.txt','r+',encoding='utf-8') as f4:
- aready=f4.read()
- if username not in aready:
- print("你的满额任务达成,获得精美杯子一个..................")
- shoppingcar.append(['精美杯子', ])
- if len(aready) != :
- f4.write('\n'+username)
- else:
- f4.write(username)
- else:
- print('你已经领取过奖励了,你的购物车:%s'%shoppingcar)
- continue
- else:
- print("你没有满足活动的需求")
- else:
- exit("input error")
购物车
所有代码:
- import time,sys
- def shopping():
- "'购物车程序,进入时输入有多少钱,然后进行商品购物,消费满500后选择接受礼品,礼品每个用户只能接受一次,接受过的用户存放在c.txt文件中,购物完毕后打印发票,发票存储在b.txt文件中,"
- ready = 0
- salary = input("how much is you salary:")
- out = 0
- #count = 0
- if salary.isdigit(): #判断salary是否为数字
- salary = int(salary)
- else:
- exit("input string not digital....exit")
- list = [["精选猪肉3斤", 100], ["牛肉3斤", 200], ["鸡肉三斤", 50]]
- shoppingcar = []
- while True:
- print("----------------------------------------------------------------------------")
- print("Welcome to xiaodai store")
- print("\033[31;1m目前正在做活动,购买商品满500的话就赠送一个精美的杯子哦!!!(超市内按h咨询)每人限1次 \033[0m")
- for i in enumerate(list): #enumerate可以在读取数据时添加一个编号在第一位,如[0,"精选猪肉3斤", 100]
- info_l = i[0]
- info_n = i[1][0]
- info_m = i[1][1]
- print(info_l, info_n, info_m)
- user_c = input("please input your choose(h/help):")
- if user_c.isdigit():
- user_c = int(user_c)
- if user_c < len(list) and user_c >= 0:
- user_c = int(user_c)
- money = list[user_c][1]
- shoppingcar_1 = list[user_c]
- ready = ready + money
- if salary >= money:
- shoppingcar.append(shoppingcar_1)
- print(shoppingcar_1, "add in then shoppingcar.....")
- salary -= money
- else:
- print(" ----------------------")
- print("|your money not enough:|", salary)
- print(" ----------------------")
- else:
- print("没有这个商品编号")
- elif user_c == "h" or user_c == help or user_c == "H":
- print("q/quit quit store")
- print("c/check check shopping car and salary")
- print("0-2 choice of goods")
- print("购买完商品后,输入[F]键来参加活动(满500赠送精美杯子)")
- print("l/list 查看发票,购买完并退出超市后才能通过此方法看到发票")
- elif user_c == "q" or user_c == "quit" or user_c == "Q":
- print("your shoppingcar:", shoppingcar)
- print("Be left over how much money:", salary)
- time_1 = '%Y-%m-%d-%X'
- time_2 = time.strftime(time_1)
- with open('b.txt', 'a', encoding='utf-8') as f2:
- f2.write("发票:%s用户 在 %s 购买了 %s 共消耗%s 元 \n" %(username,time_2,shoppingcar,ready))
- exit("quit....")
- elif user_c == 'l'or user_c =='list':
- with open('b.txt','r+',encoding='utf-8')as f3:
- print(f3.read())
- elif user_c == "c" or user_c == "check" or user_c == "C":
- print("Be left over how much money:", salary)
- print(shoppingcar)
- elif user_c == "f" or user_c == "F":
- if ready >= 500 :
- with open('c.txt','r+',encoding='utf-8') as f4:
- aready=f4.read()
- if username not in aready:
- print("你的满额任务达成,获得精美杯子一个..................")
- shoppingcar.append(['精美杯子', 0])
- if len(aready) != 0 : #len可以打印这个变量中是否有数据,他会显示这个文件的字数,添加这个判断是格式问题,如果文件中没有数据,责直接将数据写入进去,不加空格,如果存在数据,责在插入数据前先执行回车.
- f4.write('\n'+username) #在写入内容是在输入回车,不能用逗号来区分,用加号
- else:
- f4.write(username)
- else:
- print('你已经领取过奖励了,你的购物车:%s'%shoppingcar)
- continue
- else:
- print("你没有满足活动的需求")
- else:
- exit("input error")
- def auth():
- '''慢慢的显示验证中'''
- for i in range(1):
- sys.stdout.write("验")
- sys.stdout.flush()
- time.sleep(0.3)
- sys.stdout.write("证")
- sys.stdout.flush()
- time.sleep(0.3)
- sys.stdout.write("中")
- sys.stdout.flush()
- time.sleep(0.3)
- sys.stdout.write("请")
- sys.stdout.flush()
- time.sleep(0.3)
- sys.stdout.write("稍")
- sys.stdout.flush()
- time.sleep(0.3)
- sys.stdout.write("等")
- sys.stdout.flush()
- time.sleep(0.3)
- user_list={
- 'xiaoming':{'xiaoming1'},
- 'xiaogang':{'xiaogang1'},
- 'xiaomei':{'xiaomei1'}
- }
- with open('a.txt','r+',encoding='utf-8')as f:
- lock_list=f.read()
- count=0
- username = input(' please input your user name:')
- for l in range(100):
- passwd = input('\033[31;3m please input your passwd:\033[1m')
- for i in user_list:
- auth()
- print('\n')
- if username in lock_list :
- print("用户已被锁定")
- break
- elif username not in user_list :
- print('用户不存在')
- username = input(' please input your user name:')
- break
- else:
- a=user_list[username]
- if passwd in a :
- print('登录成功')
- shopping()
- elif count >= 3:
- print("密码错误次数过多,用户%s被锁定,如需解锁,请联系管理员"%username)
- f.write(username)
- f.write('\n')
- exit('quit...')
- else:
- print('密码错误登录失败,请重试')
- count = count + 1
- break #为了确保如"密码错误登录失败,请重试"提示只提示一次,而不是按照for循环的提示多次,当执行完后就退出for循环,退出后又继续加载这个循环。
python 购物车+用户认证程序的更多相关文章
- Python的用户交互程序及格式化输出
1. 用户输入 在Python 3 中,用户输入用input()函数即可实现用户交互程序. 例如,我们根据程序提示输入用户名和密码,并且打印输入的信息. 2. 字符串格式化输出 例如,我们根据程序提 ...
- Python入门-用户登录程序升级版
编写登陆接口 基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程 ...
- Python入门-用户登录程序
_flag = Falsecount = 0users = [['ziv', '123'], ['alex', '12345']]while count < 3: username = inpu ...
- 用户认证授权和Shiro入门
1.权限管理基础(认证和授权): 前言 本文主要讲解的知识点有以下: 权限管理的基础知识 模型 粗粒度和细粒度的概念 回顾URL拦截的实现 Shiro的介绍与简单入门 一.Shiro基础知识 在学习S ...
- python 全栈开发,Day104(DRF用户认证,结算中心,django-redis)
考试第二部分:MySQL数据库 6. MySQL中char和varchar的区别(1分) char是定长,varchar是变长. char的查询速度比varchar要快. 7. MySQL中va ...
- python 购物车小程序
python 购物车小程序 功能要求:1.启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表2.允许用户根据商品编号购买商品3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4. ...
- python 全栈开发,Day79(Django的用户认证组件,分页器)
一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...
- Python学习笔记一:第一个Python程序,变量,字符编码与二进制,用户交互程序
第一个python程序 Windows:设置环境变量,X:\pthonxxx,xxx是版本号 在命令提示符下 输入python,进入解释器 >>>print(“Hello World ...
- redis介绍及在购物车项目中的应用,用户认证
1.redis 2.购物车的构建 api结构: models.py(创建完后自行添加数据) from django.db import models from django.contrib.conte ...
随机推荐
- CSS基础:text-overflow:ellipsis溢出文本显示省略号的详细方法_CSS教程
4要素: width: 125px; //宽度必须 text-overflow: ellipsis/clip; //省略号或裁剪: white-space: nowrap;//强制内容在一行显示; ...
- php的协程
有关迭代生成器的内容在这篇博客中 协程 协程的支持是在迭代生成器的基础上, 增加了可以回送数据给生成器的功能(调用者发送数据给被调用的生成器函数). 这就把生成器到调用者的单向通信转变为两者之间的双向 ...
- linux命令详解——sed
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: se ...
- LInux基于nginx与OpenSSL实现https访问
注意!!首先在nginx安装时添加--with-http_ssl_module模块,否则将会报错,只能从头开始了 自建证书: 通过openssl命令(软件包:openssl :openssl-deve ...
- bootstap 表格自动换行 截取超长数据
<table class="table" style="TABLE-LAYOUT:fixed;WORD-WRAP:break_word">
- Hadoop_03_Hadoop分布式集群搭建
一:Hadoop集群简介: Hadoop 集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起: HDFS集群:负责海量数据的存储,集群中的角色主要有: NameNo ...
- 1.RPC原理学习
1.什么是RPC:远程过程调用协议 RPC(Remote Procedure Call Protocol)— 远程过程调用协议,是一种通过网络从远程计算机程序上请求服务,而不需要 了解底层网络技术的协 ...
- windows 快捷键收集
1. 放大镜 windows徽标 + "+“ 2. 直接显示桌面 windows徽标 + D 3. 收起所有窗口 windows徽标 + M 4. 浏览器中恢复之前关闭的页面 Ctrl + ...
- Almost Regular Bracket Sequence CodeForces - 1095E (线段树,单点更新,区间查询维护括号序列)
Almost Regular Bracket Sequence CodeForces - 1095E You are given a bracket sequence ss consisting of ...
- GIT和SVN的区别(面试)
Cit是分布式,而SVN不是分布式 存储内容的时候,Git按元数据方式存储,而SVN是按文件 Git没有一个全局版本号,SVN有,目前为止这是SVN相比Git缺少的最大的一个特征 Git的内容完整性要 ...