Python练习1——编写登陆接口

编写登陆接口

基础需求

  • 让用户输入用户名和密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序
  • 附加功能:多用户、三次输入错误锁定账户(这是我自己加上去的,与升级需求只差对文件进行操作)
# -*- coding:utf-8 -*-
username = ["usr1", "usr2", "usr3"] # 用户列表
password = ["111", "222", "333"] # 密码列表
flag = [0, 0, 0] # 用于标记当前用户状态,初始值为0,锁定为1
count = 0  # 用于控制输入次数
while True:
    user = input("用户名:")
    if user in username:
        addr = username.index(user)
        if flag[addr] == 0:
            passwd = input("密码:")
            if passwd == password[addr]:
                print("欢迎", username[0])
                break
            else:
                print("用户名或密码错误!")
                if count == 2:
                    print("三次错误,用户将被锁定!")
                    flag[addr] = 1
                count += 1

        else:
            print("用户已被锁定!")
            break
        continue
    else:
        print("用户不存在!")
        continue

升级需求

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

参考:https://www.cnblogs.com/wxp997/p/6792825.html

# _*_ coding:utf-8 _*_
import sys,os
import getpass

i = 0
while i < 3:
    name = input('输入用户名:')

    lock_file = open('Locked_usr', 'r+') # 以读写模式打开Locked_usr,查看用户是否被锁定
    lock_list = lock_file.readlines()  # 按行读取后,存入列表

    for lock_line in lock_list:
        lock_line = lock_line.strip('\n')  # 把每行的换行符处理掉
        if name == lock_line:
            sys.exit('用户 %s 已经被锁定,退出' % (name))

    user_file = open('Username', 'r') # 只读模式打开Username,查看是否存在该用户
    user_list = user_file.readlines()  # 按行读取后存入列表

    for user_line in user_list:
        (user, password) = user_line.strip('\n').split()  # 去除每行的'\n'后按空格分隔,对应项赋值

        if name == user:
            j = 0
            while j < 3:
                passwd = input('请输入密码:')
                if passwd == password:
                    print('用户%s登陆成功' % name)
                    sys.exit(0)
                else:
                    if j!=2:
                        print('用户%s密码错误,请重新输入,还有%d次机会' % (name, 3-j))

                    j += 1
            else:
                lock_file.write(name + '\n')
                sys.exit('用户 %s 达到最大登陆次数,将被锁定并退出' % name)
        else:
            pass
    else:
        if i != 2:
            print('用户名%s不存在,请重新输入,还有%d次机会' % (name, 3-i))
    i += 1
else:
    sys.exit('用户%s不存在,退出' % name)
lock_file.close()
user_file.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值