用户登入程序小练习

# -*- 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.用户三次输入错误 便将用户名添加进黑名单

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

转载于:https://www.cnblogs.com/Lowsheep/p/6806188.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值