首页 > 代码库 > 用户登入程序小练习

用户登入程序小练习

# -*- coding:utf-8 -*-
count = 0
with open(password,r,encoding =utf-8)as p_word:
    p = p_word.read().split(,)
f = open(blacklist,r+,encoding = utf-8)
with open("username",r,encoding =utf-8)as  u_name:
    _f = u_name.read().split(,)

list = (f.read()).split(,)
while count < 3: #输入次数控制在三次以内
    count += 1
    user_name = input(请输入用户名:)
    password = input(请输入密码:)
    if user_name in list:  #判断用户名是否在黑名单之中
        print(您在黑名单之中!!)
        exit()
    else:
        if user_name not in _f: #判断用户名是否在账号密码列表之中 不在则返回重新输入
            print(用户名不存在!请重新输入)
            continue
        else:
            if password not in p: #判断密码是否在账号密码列表之中 不在则返回重新输入
                print(密码输入错误 请重新输入)
                continue
            else:
                print("登入成功!")
                exit()
print(该账号已锁定!请联系管理员将账号解除锁定)
f.write(,+ user_name) #将三次错误的
f.close()

这段代码虽然可用 但是加入黑名单的用户名却以第三次输入的用户名为准 所以我将用户名判断放在了循环外 但这样用户失去了错误输入用户名的机会 让程序直接退出了 而且锁定程序针对性从所有用户转变为已注册用户。代码如下:

# -*- coding:utf-8 -*-
count = 0
with open(password,r,encoding =utf-8)as p_word:
    p = p_word.read().split(,)
f = open(blacklist,r+,encoding = utf-8)
with open("username",r,encoding =utf-8)as  u_name:
    _f = u_name.read().split(,)
list = (f.read()).split(,)


user_name = input(请输入用户名:)
if user_name in list:  #判断用户名是否在黑名单之中
    print(您在黑名单之中!!)

else:
    if user_name not in _f: #判断用户名是否在账号密码列表之中 不在则返回重新输入
        print(用户名不存在!请输入正确用户名)
    else:
        while count < 3: #密码输入次数控制在三次以内
            count += 1
            password = input(请输入密码:)
            if password not in p: #判断密码是否在账号密码列表之中 不在则返回重新输入
                print(密码输入错误 请重新输入)
                continue
            else:
                print("登入成功!")
                exit()
        print(该账号已锁定!请联系管理员将账号解除锁定)
        f.write(,+ user_name)
        f.close()

 写到这里 发现忘了贴出要求 这里补上:

1.输入用户名和密码成功登入并打印一条成功登入的信息

2.用户三次输入错误 便将用户名添加进黑名单

代码测试之后我发现有一个小问题,已注册的用户名和密码无法一一对应 所以应该用字典来记录用户名和密码会比较好。

用户登入程序小练习