python3学习之路_day1
登录程序
1.输入用户名密码
2.认证成功后显示欢迎信息
3.输错三次后锁定
#!/usr/bin/env python
#_*_coding:utf-8_*_
#by anthor gushiren 2017-01-10
#blog:http://www.cnblogs.com/gushiren/
import sys
import getpass
import os
info = {'gushiren':'','zhangsan':'','zhaosi':''}
count = 3
f = open('locked.txt','r')
lock_file = f.readlines()
f.close()
while True:
username = raw_input("\033[32m请输入用户名:\033[0m").strip()
password = getpass.getpass("\033[32m请输入密码:\033[0m").strip()
for i in open('locked.txt').readlines():
line=i.strip("\n")
lock_file.append(line)
if username in lock_file:
print("\033[41m用户%s已锁定,请联系系统管理员!\033[0m") % username
sys.exit()
if username in info.keys():
user_password = info['%s' %username]
if password == user_password:
print "\033[36m登录成功!欢迎%s登录系统!\033[0m" % username
break
else:
count -= 1
if count == 0:
f = open('locked.txt','a+')
f.writelines('%s'%username)
f.write('\n')
f.close()
print "\033[31m密码错误次数达到三次,该账户已锁定!\033[0m"
sys.exit()
else:
print "\033[33m密码错误,还剩%s次机会,超出次数账号将被锁定!\033[0m" % count
else:
print "\033[31m用户%s不存在,请重新输入:\033[0m"%username
continue
1.[输入正确的用户名和密码]
[root@shell_python ~]# python welcome.py
请输入用户名:gushiren
请输入密码:
登录成功!欢迎zhangxiaoyu登录系统!
######当输入正确的用户名和密码打印登录成功和欢迎信息!
2.[输入错误的用户名]
[root@shell_python ~]# python welcome.py
请输入用户名:nouser
请输入密码:
用户nouser不存在,请重新输入:
请输入用户名:
#######当输入错误的用户名和密码(正确或者不正确或为空)提示用户不存在请重新输入!
3.[输入正确的用户名和错误的密码]
[root@shell_python ~]# python welcome.py
请输入用户名:gushiren
请输入密码:
密码错误,还剩2次机会,超出次数账号将被锁定!
请输入用户名:gushiren
请输入密码:
密码错误,还剩1次机会,超出次数账号将被锁定!
请输入用户名:gushiren
请输入密码:
密码错误次数达到三次,该用户已被锁定!请联系系统管理员解锁!
#######当输入正确的用户名和错误的密码提示密码错误,并提示输入密码错误三次此账户将被锁定!
4.[输入被锁定的用户]
[root@shell_python ~]# python welcome.py
请输入用户名:gushiren
请输入密码:
用户gushiren已被锁定,请联系系统管理员解锁!
#######当输入已经被锁定的用户时,提示该用户已被锁定,请联系系统管理员解锁!
5.[查看被锁定的用户]
[root@shell_python ~]# cat locked.txt
gushiren
#######凡是加入到此锁定文件的用户均不能登录系统!
python3学习之路_day1的更多相关文章
- Python3学习之路~0 目录
目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...
- Python3学习之路~8.5 SocketServer实现多并发
前面几节我们写的socket都只能实现服务端与一个客户端通信,并不能实现服务端与多客户端同时通信.接下来我们就来学习一下如何实现服务端同时与多个客户端通信,即并发. Socket Server soc ...
- Python3学习之路~9.4 队列、生产者消费者模型
一 队列queue 当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用. 队列的作用:1.解耦,使程序直接实现松耦合 2.提高处理效率 列表与队列都是有顺序的,但是他们之间有一个很大的区别 ...
- Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件
我们一般使用linux的时候,都是在Windows上安装一个ssh客户端连接上去.那么从一台linux如何连接到另一条linux呢?使用ssh命令即可,因为每台linux机器自己都有一个ssh客户端. ...
- Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现
作业: 开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp s ...
- Python3学习之路~8.4 利用socket实现文件传送+MD5校验
利用socket实现文件传送,大约分为如下几步: 1.读取文件名2.检测文件是否存在3.打开文件(别忘了最后关闭文件)4.检测文件大小5.发送文件大小给客户端6.等客户端确认7.开始边读边发数据8.m ...
- Python3学习之路~7.5 异常处理
1.异常基础 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!! try: pass except Excepti ...
- Python3学习之路~5.12 hashlib & hmac & md5 & sha模块
hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import md5 h ...
- Python3学习之路~5.7 Json & pickle 模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...
随机推荐
- 【洛谷P3469】[POI2008]BLO-Blockade
BLO-Blockade 题目链接 若一个点为割点:统计出每个子树的大小,两两相乘再相加, 再加上n-1,为这个点与其他点的拜访数, 因为拜访是互相的,最后再乘二即可 若一个点不是割点:只有(n-1) ...
- 旧文备份:FFTW介绍
1. FFTW介绍 FFTW由麻省理工学院计算机科学实验室超级计算技术组开发的一套离散傅立叶变换(DFT)的计算库,开源.高效和标准C语言编写的代码使其得到了非常广泛的应用,Intel的数学库和Sci ...
- 火狐 SSL 收到了一个弱临时 Diffie-Hellman 密钥
火狐 SSL 收到了一个弱临时 Diffie-Hellman 密钥 最近在用FireFox 调试时使用Https,连接 https网址 时发生错误. 在服务器密钥交换握手信息中 SSL 收到了一个 ...
- 复制D:\\day05目录下的所有文件到D:\\copy,并将.txt文件改为.java文件。
**解题思路: 1.首先定义一个静态的refile方法,参数传入两个文件路径 2.要复制目录下的所有文件,首先查询File类的方法,可以使用listFiles方法得到目录下的文件 3.想到这问题基本就 ...
- Python基础—04-流程控制
流程控制 循环结构(while) 格式 while 表达式: 语句块 执行流程:当程序执行到while语句时,首先判断表达式的真假.若表达式的值为真,则执行对应的语句块,之后返回while继续判断表达 ...
- xcode7--iOS开发---将app打包发布至app store
时隔3个月再次接触应用打包,又是一顿折腾 说说这次的感受吧: 变得是打包时间减少到4小时(其中大部分时间还是xcode7或者是iOS9的原因),不变的是还是一如既往的坑!! 好了,废话不多说,下面讲讲 ...
- Java的内存--存储
0.参考资料: http://www.j2megame.org/index.php/content/view/2246/125.html 1.Java的内存机制 Java 把内存划分成两种:一种是栈内 ...
- 表单转换为JSON
$.fn.serializeObject = function () { var o = {}; var a = this.serializeArray(); $.each(a, function ( ...
- CF294C Shaass and Lights(排列组合)
题目描述 There are n n n lights aligned in a row. These lights are numbered 1 1 1 to n n n from left to ...
- FirstBird--项目流程
创建项目(英文路径)—–img图片文件 创建窗体–设置大小(Basic—size–>320*480)—最大化功能禁用(Expert–>setResizable(false)) 添加面板–设 ...