创建文件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 购物车+用户认证程序的更多相关文章

  1. Python的用户交互程序及格式化输出

    1.  用户输入 在Python 3 中,用户输入用input()函数即可实现用户交互程序. 例如,我们根据程序提示输入用户名和密码,并且打印输入的信息. 2. 字符串格式化输出 例如,我们根据程序提 ...

  2. Python入门-用户登录程序升级版

    编写登陆接口 基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程 ...

  3. Python入门-用户登录程序

    _flag = Falsecount = 0users = [['ziv', '123'], ['alex', '12345']]while count < 3: username = inpu ...

  4. 用户认证授权和Shiro入门

    1.权限管理基础(认证和授权): 前言 本文主要讲解的知识点有以下: 权限管理的基础知识 模型 粗粒度和细粒度的概念 回顾URL拦截的实现 Shiro的介绍与简单入门 一.Shiro基础知识 在学习S ...

  5. python 全栈开发,Day104(DRF用户认证,结算中心,django-redis)

    考试第二部分:MySQL数据库 6.  MySQL中char和varchar的区别(1分) char是定长,varchar是变长. char的查询速度比varchar要快. 7.   MySQL中va ...

  6. python 购物车小程序

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

  7. python 全栈开发,Day79(Django的用户认证组件,分页器)

    一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...

  8. Python学习笔记一:第一个Python程序,变量,字符编码与二进制,用户交互程序

    第一个python程序 Windows:设置环境变量,X:\pthonxxx,xxx是版本号 在命令提示符下 输入python,进入解释器 >>>print(“Hello World ...

  9. redis介绍及在购物车项目中的应用,用户认证

    1.redis 2.购物车的构建 api结构: models.py(创建完后自行添加数据) from django.db import models from django.contrib.conte ...

随机推荐

  1. 关于MVC与MVP的理解

    1. MVC的理解误区 理解误区: 1. 认为Model是指失血模型的实体类(Entity),是作为View和Controller之间的传输数据. 2. 把业务逻辑全部放在Controller端,认为 ...

  2. 函数缓存 (Function caching)

    函数返回值缓存是优化一个函数的常用手段.我们可以将函数.输入参数.返回值全部保存起来,当下次以同样的参数调用这个函数时,直接使用存储的结果作为返回(不需要重新计算). 函数缓存允许我们将一个函数对于给 ...

  3. C#中UDP(Socket)

    1 使用无连接的套接字,我们能够在自我包含的数据包里发送消息,采用独立的读函数读取消息,读取的消息是使用独立的发送函数发送的.但是UDP数据包不能保证可靠传输,存在许多的因素,比如网络繁忙等等,都有可 ...

  4. centos8/redhat8 无法上网,通过启动systemctl start NetworkManger搞定

    在systemd里面,可以直接使用systemctl进行管理 启动:systemctl start NetworkManger 关闭:systemctl stop NetworkManager 开机启 ...

  5. Linux安装apidoc

    一.安装apidoc所需环境(nodejs) 1. 查看系统是32位还是64位 uname -r 可以看出我这台linux的是64位的 2. 到node官网下载node的包并上传linux https ...

  6. 从零开始学会GAN 0:第一部分 介绍生成式深度学习(连载中)

    本书的前四章旨在介绍开始构建生成式深度学习模型所需的核心技术.在第1章中,我们将首先对生成式建模领域进行广泛的研究,并从概率的角度考虑我们试图解决的问题类型.然后,我们将探讨我们的基本概率生成模型的第 ...

  7. Websocket @serverendpoint 404

    今天写一个前后端交互的websocket , 本来写着挺顺利的,但测试的时候蒙了,前端websocket发的连接请求竟然连接不上 返回状态Status 报了个404 ,然后看后台onError方法也没 ...

  8. FastDFS为什么要结合Nginx?

    为什么选择Nginx Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟 ...

  9. 9种纯CSS3人物信息卡片动态展示效果

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  10. 线程安全 Vs 非线程安全

    线程安全:多线程访问时,采用了加锁机制,当一个线程读取数据时,其他线程不能访问直到该线程读取完毕.不会出现数据不一致或者脏数据. 非线程安全:不提供数据保护,可能出现其他线程访问时更改数据而该线程得到 ...