zoukankan      html  css  js  c++  java
  • 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(' ') #去除每行内容的换行符
    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(' ').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+' ')
    sys.exit("您已输错三次,最后一次输入的用户已锁定")
  • 相关阅读:
    《淘宝技术这十年》读书总结
    广告:互联网公司的纽带
    广告:互联网公司的纽带
    定期存款要及时
    定期存款要及时
    Java实现蓝桥杯VIP算法训练 自行车停放
    Java实现蓝桥杯VIP算法训练 自行车停放
    Java实现蓝桥杯VIP算法训练 自行车停放
    Java实现蓝桥杯VIP算法训练 数组逆序排列
    Java实现蓝桥杯VIP算法训练 数组逆序排列
  • 原文地址:https://www.cnblogs.com/alvin-jie/p/8367786.html
Copyright © 2011-2022 走看看