需求:

让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序
可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

代码如下:

 # -*- coding: utf-8 -*-
# __date__ = 3/12/2018 count = 0
users = {'chfang':'', 'alice':'abcde', 'admin':'admin'} #利用字典存储多个用户名/密码
_name = input("Username: ")
if _name in users: #判断用户输入的用户名是否在字典中
lock_file_name = _name + "_lock.txt" #根据用户名读取对应文件中的锁定状态码(0表示允许登录,1表示帐号被锁定)
with open(lock_file_name, "r") as fp:
_lock = fp.read()
if _lock == "":
while count < 3:
count += 1
_passwd = input("Password: ")
if _passwd == users.get(_name): #根据用户名在从字典中取出其对应的密码
print("登录成功!欢迎%s" % _name)
with open(lock_file_name, "w") as f1:
f1.write("")
break
else:
print("登录失败!剩余重试次数%d" % (3 - count))
with open(lock_file_name, "w") as f1:
f1.write("")
elif _lock == "":
print("您的账户已被锁定,请联系管理员!")
else:
print("状态文件不能为空,请联系管理员!")
else:
print("用户不存在!")
print("-----------------------------") #仅作结束提示用途
基础功能均能实现。

Python学习之登陆认证的更多相关文章

  1. python模块app登陆认证(M2Crypto数字证书加密)

    需求: 1.通过数字证书,非对称加密方式传送对称秘钥给服务端 2.用户名.密码使用对称秘钥加密,发送服务端验证 3.传送数据使用字节流方式 实现思路: 1.了解python的struct模块,用于字节 ...

  2. python学习入门第一天总结

    虽然之前自己也看过许多关于python的视频,但一直没有动力与勇气,所以未能坚持且也没有学得这么深刻,这次希望通过python自动化培训,能够彻底改变自己,通过第一天的python学习,自己学到了许多 ...

  3. Python学习day5作业

    目录 Python学习day5作业 ATM和购物商城 1. 程序说明 2. 基本流程图 3. 程序测试帐号 4. 程序结构: 5. 程序测试 title: Python学习day5作业 tags: p ...

  4. Python学习笔记(十三)

    Python学习笔记(十三): 模块 包 if name == main 软件目录结构规范 作业-ATM+购物商城程序 1. 模块 1. 模块导入方法 import 语句 import module1 ...

  5. Python学习笔记(十)

    Python学习笔记(十): 装饰器的应用 列表生成式 生成器 迭代器 模块:time,random 1. 装饰器的应用-登陆练习 login_status = False # 定义登陆状态 def ...

  6. Python学习计划

    ---恢复内容开始--- Python学习计划   https://edu.csdn.net/topic/python2?utm_source=blog4   匠人之心,成就真正Python全栈工程师 ...

  7. DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  8. Python学习笔记,day1

    Python学习第一天 一.变量 变量定义的规则: 变量名只能是 字母.数字或下划线的任意组合 变量名的第一个字符不能是数字 以下关键字不能声明为变量名['and', 'as', 'assert', ...

  9. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

随机推荐

  1. python方法

    跨模块级(跨文件)的[全局变量的方法] ``` # -*- coding: utf-8 -*- # /modvar.py def _init(): global _module_dict _modul ...

  2. Window WindowManager 和WindowManager.LayoutParams

    <一> Window window是android中的窗口,表示顶级窗口的意思,也就是主窗口,它有两个实现类, PhoneWindow和MidWindow,我们一般的activity对应的 ...

  3. 【防火墙】DMZ

    DMZ是英文“demilitarized zone”的缩写,中文名称为“隔离区”,也称“非军事化区”.它是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安 ...

  4. js分享插件

    这是个在线版的分享插件 <div class="share-icon"> <span>分享:</span> <div class=&quo ...

  5. python 3.6 链接mssql 进行数据操作

    #!/usr/bin/env python # -*- coding: UTF-8 -*- import pymssql class MSSQL(object): ''' 对pymssql的简单封装 ...

  6. spring mvc改造成spring boot

    一.新增依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  7. Android 开发知识结构图

  8. url长度

    今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的.URL中列出了所有参与该操作的Ticket Id.于是,我想起GET请求是有 ...

  9. AngularJS表单验证开发案例

    angular支持IE8+浏览器,虽然性能很好,但是目前只适用于手机端项目 知识点:域$scopeAngularJS基础指令指令实现不同的功能学习思路和方法 <link rel="st ...

  10. Struts2_使用token拦截器控制重复提交(很少用)

    控制重复提交的方式:1.表单提交后页面重定向:2.Struts2.x token拦截器 大致流程: 例子: index.jsp <%@ page language="java" ...