python编程证书_python-编写认证登录

readme

(1)作业名称:编写认证登录

(2)作者:wenjie

(3)作业需求:

让用户输入用户名密码

认证成功后显示欢迎信息

输错三次后退出程序

升级需求:

可以支持多个用户登录 (提示,通过列表存多个账户信息)

用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

(4)测试:

环境:pycharm + win10

1、输入lockfile锁定文件中的laowang,结果:提示用户已锁定

2、使用userfile中正确的用户名密码-->故意输错三次(锁定)-->

重新输入正确的用户名密码(提示用户登录,打印当前用户列表

并是否继续使用其他用户登录)-->输入已登录用户(提示已登录,

退出)-->输入新的用户(正确输入,打印用户列表)。。。

流程图

代码:

#!/usr/bin/env python

#coding=utf-8

import sys,getpass

i= 0

userfile_list = [] #定义一个空列表,用来存放(用户名+密码)

users_list = [] #定义一个空列表,用来存放已登录的用户

while i < 3:

# 获取用户名

print('='*20)

username = input("请输入用户名:").strip()

# 判断用户是否被锁定

with open('lockfile','r') as lock_f: #打开lock文件,并赋予可读写权限

lock_list = lock_f.readlines() #readlines()逐行读取全部内容

for lock_name in lock_list: #遍历lock_list,如果用户名在,则提示锁定

lock_name = lock_name.strip('\n') #去除每行内容的换行符

if lock_name == username:

print("用户已经锁定,无法登录!")

sys.exit(1)

# 判断用户是否已登录

if username in users_list:

print("用户%s已登录,请勿重复!"%username)

sys.exit(1)

# 获取密码

print('='*20)

password = getpass.getpass("请输入密码:").strip()

with open('userfile','r') as user_f: #打开userfile,赋予读权限

user_list = user_f.readlines()

for user_line in user_list:

(user,passwd) = user_line.strip('\n').split()

userfile_list.append(user+passwd) #将每个用户密码存入userfile_list

user_input = username + password

#判断用户名密码

if user_input in userfile_list: #比较用户输入的用户名密码是否在userfile_list内

print("==========欢迎%s登录!=========="%username)

users_list.append(username)

print("当前登录的用户有:")

for temp,j in enumerate(users_list,1):#打印当前登录的用户

print("%s. %s"%(temp,j))

choice = input("是否继续使用其他用户登录?(继续输入:‘Y’or‘y’;输入其他退出):")

if choice == 'y' or choice == 'Y':

i = 0 #如果选择y或者Y,重置i为0,并结束本次循环

continue

else:

sys.exit(0)

else:

print("用户名或者密码错误请重新输入,您还有%d次输入机会"%(2-i))

i += 1

else:

with open('lockfile','a') as lock_f: #打开lockfile赋予追加权限

lock_f.write(username+'\n')

sys.exit("您已输错三次,最后一次输入的用户已锁定")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值