周末综合作业

周末综合作业:(代码块挡住的注释部分可以点击代码块然后按键盘‘→’查看)

2.1:编写用户登录接口

1、输入账号密码完成验证,验证通过后输出"登录成功"

user_info = ['lance','123']
username = input('请输入账号:')
password = input('请输入密码:')
if username == user_info[0] and password == user_info[1]:
    print('登录成功')
else:
    print('账号密码错误')

2、可以登录不同的用户

# 方法一
user_info = [
    ['lance1','123'],
    ['lance2','123'],
    ['lance3','123'],
]
username = input('请输入账号:')
password = input('请输入密码:')
for i in user_info:
    if i[0] ==username and i[1] == password:
        print('登录成功')
        break
    else:
        print('账号密码错误')
        break
# 方法二:多用户推荐字典类型
user_info = {
    'lance1':'123',
    'lance2':'123',
    'lance3':'123',
}
username = input('请输入账号:')
password = input('请输入密码:')
if username in user_info.keys() and password in user_info.values():
    print('登录成功')
else:
    print('账号密码错误')

3、同一账号输错三次锁定,(提示:锁定的用户存入文件中,这样才能保证程序关闭后,该用户仍然被锁定)

user_info = {
    'lance1': '123',
    'lance2': '123',
    'lance3': '123',
}
tag = 0
i = 0
while i < 3:
    username = input('请输入账号:')
    if username in user_info.keys():
        password = input('请输入密码:')
        if password in user_info.values():
            with open(r'db.txt', mode='rt', encoding='utf-8') as f:  # 输入账号密码后判断该账号是否在黑名单当中
                msg = f.read().split()
                for line in msg:
                    x, y = line.split(':')
                    if x == username:
                        print('对不起,你的账号已经被锁定!')
                        break
                else:
                    print('登录成功')
            break
        else:
            print('密码输入错误,请重新输入!')
            i += 1
            if i == 3:
                print('您已连续输错三次密码,该账号锁定,无法登陆')
                with open(r'db.txt',mode='at',encoding='utf-8') as f:
                    f.write('{x}:{y}
'.format(x=username,y=user_info.get(username)))  # 确认三次输入密码之后,将该账号和所其对应的密码一起拉入黑名单,需要注意,是初始确定的密码,不是输入密码!!
                    f.close()
    else:
        print('账号错误')

2.2:编写程序实现用户注册后,可以登录(一次性,每次运行需重新注册)

msg = """
0 退出
1 登录
2 注册
"""
print(msg)
q = 0
with open('data.txt', mode='wt', encoding='utf-8') as f:  # 主要为了防止用户不注册直接登陆,所以提前创建账号信息文件
    f.write('')
    f.close()
while True:
    cmd = input('请输入命令:>>').strip()
    if not cmd.isdigit():
        print('必须输入命令编号的数字,傻叉')
        continue
    if cmd == '0':
        break
    elif cmd == '1':
        while q < 3:
            user_name = input('请输入您的账号:').strip()
            pass_word = input('请输入您的密码:').strip()
            with open('data.txt', mode='rt', encoding='utf-8') as f:
                i = f.read().split()
                if i != '':  # 与一开始创建信息文件相呼应,好做if判断,如果啥都没有就说明还没有注册需要提醒用户
                    for c in i:
                        a, b = c.split(':')
                        if user_name == a and pass_word == b:
                            print('登陆成功')
                            break
                        else:
                            q +=1
                    else:
                        print('登陆失败')
                    break
                else:
                    print('你还没有注册账号哦,先注册再登录吧!')
                    break
        else:
            print('连续三次登录失败')

    elif cmd == '2':
        username = input('请输入您的注册账号:').strip()
        password = input('请输入您的注册密码:').strip()
        with open('data.txt', mode='at', encoding='utf-8') as f:
            f.write('{x}:{y}
'.format(x=username, y=password))  # 在写入后面要加
哦,要不然注册多用户切分列表会出大问题
            f.close()
    else:
        print('输入的命令不存在')

反思:

  自己之前培养的习惯不能丢,不管是什么代码,都需要写程序流程图加快速度!!

  写代码不够熟练,并不能各种随意转换!

  学的内容尚且还少,还有许多瑕疵,和我的想法还有点偏差,以后学到了回来补回!!!

原文地址:https://www.cnblogs.com/Lance-WJ/p/12492241.html