用户认证的小程序练习
# -*- coding:utf-8 -*- # author:倪周强 import os users = [['user1', '123'], ['user2', '456'], ['user3', '789']] auth_file = os.path.exists('auth_status') if not auth_file: # 如果不存在,那说明是第一次运行程序,就新建一个文件,写上1,表示可以进行验证过程。 # 写完1,回到首部去读取这个状态值赋给auth_value变量,以便后续判断是否锁定。 f = open('auth_status', 'w+', encoding='utf-8') f.write('1') f.seek(0) auth_value = f.read() f.close() else: # 如果存在,说明不是第一次运行程序,那就读取文件,把值赋给auth_value变量。 f = open('auth_status', 'r+', encoding='utf-8') auth_value = f.read() f.close() if int(auth_value) == 1: # 如果是1,表示可以验证,没有锁定,继续下面的验证过程。 count = 0 # 这里的count,我理解为验证失败的次数,而不是验证的次数。 while count < 3: # 如果验证失败>=3次,就不会进入循环了。 user_name = input('请输入用户名:') user_password = input('请输入密码:') for user in users: # 从列表里取用户信息 if user_name == user[0] and user_password == user[1]: # 判断用户名和密码是否同时正确 print('恭喜你,验证成功!') # 打印消息 auth_flag = True # 给一个标志,表示验证成功,用于跳出while的外层循环。 break # 跳出for循环 else: auth_flag = False # 给一个标志,表示验证失败,这行必须有,要不然下一个if会因为没有定义而报错。 if auth_flag: # 某次验证成功了,就跳出while循环。 break count += 1 # 否则说明验证失败,失败次数+1 if count <= 2: # 前两次失败会提醒,第三次就不提醒了 print('你已经错误了%s次,还有%s次机会(错误3次,账户将被锁定)!' % (count, 3 - count)) print('-----------------------------------------------------------------------') else: # 说明while循环是完整结束的,试了三次都失败了,那么把0保存到文件里,说明账户被锁定。 f = open('auth_status', 'w+', encoding='utf-8') f.write('0') f.close() print("你已经错误了3次,账户被锁定,再见!") # 区别前两次有提醒,第三次直接再见 else: # 如果不是1,说明状态被锁定,就不再验证,直接打印消息。 print("你已经被锁定,不能登录。")
wechat: nick753159 qq: 417966852 email: nzq42@qq.com base: shanghai