Python之登录接口
作业:编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
1、流程图
2、解锁账号
账号被锁定后,执行解锁脚本代码即可。
# -*- coding:utf-8 -*- # version:python3.5 import pickle # 初始化用户以及密码 user_dict = {'admin':{'passwd':'admin','flag':'unlock'}} # 把账号、密码保存到文件中 with open('account.pkl','wb') as f: pickle.dump(user_dict, f)
3、登录接口,有选择猜数字游戏选项
输入正确账号密码后,可以选择玩猜数字游戏。猜数字游戏由系统随机生成一个1到10的数字,有3次机会猜数字。
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # Version:python3.5.0 import pickle import os import random with open('account.pkl','rb') as f: # 载入用户账户密码信息 user_dict = pickle.load(f) exit_flag = False #初始化锁定的状态为false count_lock = 0 # 初始化账号锁定次数为0次 print('**********************************') while True: user = input('请输入账号: ').strip() if user == '':continue # 用户名为空,重新输入 passwd = input('请输入密码: ').strip() # 判断是否存在输入的账号 if user_dict.get(user): # 判断账号是否锁定,锁定则退出。 if user_dict[user]['flag'] == 'lock': print('账号已经锁定,请解锁!') break # 验证密码是否正确 if user_dict[user]['passwd'] == passwd: while True: guess_choise = input('你要开始玩猜数字游戏么?(选择yes或no): ').strip() if guess_choise == '':continue elif guess_choise == 'yes': print('欢迎登陆Python自动化开发--猜数字系统') print('*******************************************') print('猜数字的范围在1到10之间.') real_num = random.randrange(1,11) # 随机生成1到10之间的一个数字 retry_count = 0 while retry_count < 3: # 有3次机会猜数字 guess_num = input('请输入你猜的数字: ').strip() if guess_num == '':continue if guess_num.isdigit(): guess_num = int(guess_num ) if guess_num > real_num : print('错误,请输入一个小一点的数字!') elif guess_num < real_num : print('错误,请输入一个大一点的数字!') else: print('恭喜你,猜到你幸运的数字 %s !!!' % real_num) break else: print('输入的不是数字,请重新输入一个数字') continue retry_count +=1 else: print('哦哦,幸运数字是 %s,下次肯定会猜中的哦!' % real_num) print('-------------------------------------') elif guess_choise == 'no': # 不想猜数字游戏,则直接退出系统 print('欢迎再次登录!') exit_flag = True break else: print('你输入的不是yes或者no,请重新输入。') continue else: count_lock += 1 # 密码不正确,统计输错次数 if (3 - count_lock): print('账号或密码错误,还有 %s 次机会尝试登陆!' % (3-count_lock)) if count_lock == 3: # 若锁定次数有3次,就锁定账号 with open('account.pkl','wb') as f: user_dict['admin']['flag'] = 'lock' # 标志账号admin为锁定状态 user_dict = pickle.dump(user_dict, f) # 修改后数据写到 account.pkl中 print('*******************************************') print('账号被锁定,请解锁!') break else: print('输入的账号不存在,请重新输入!') continue if exit_flag: # 在猜数字游戏中,选择no,则直接退出整个程序 break print('Bye bye!')