Python 分支题型练习
应用案例一:用户身份验证
题目要求:
该用户身份验证有俩个文件,一个为lock文件,该文件中的账户名不允许登录,另一个为user文件,该文件中存储的是可以进行登录的账户名和密码,要求用户最多有三次输入账户名的机会,当输入的账户名为锁定账户时,直接退出程序并提示该账户被锁定,当在三次内输入正确账户名后,可以继续账户密码,密码的输入也有三次机会,三次内密码正确,显示登录成功,三次内密码均不对,将账户锁定并写进lock文件。
题目分析:
该题目流程图如下:
题目代码:
"""
题目:用户身份认证
作者:假书生@
日期:2020年1月7日
"""
import sys #导入sys模块,作用于解释器
i = 0 #设置i变量为3,初始化输入次数
while i < 3: #当i小于3时,退出循环
print("\033[33m 欢迎来到用户登录系统:\033[0m".center(40)) #设置主页面
account = str(input("\033[33m 请输入您的账号:\033[0m".center(20)))#使用input接收到用户输入的账户名
with open("C:\\lock.txt",'r+') as lock_line: #打开账户锁定文件
lock_line = lock_line.readlines() #获取账户锁定文件的行数
for lock in lock_line: #将每一行的数据赋给lock进行循环
lock = lock.strip('\n') #将数据两边的回车清掉
if account == lock: #如果用户输入的账户名是锁定文件里的
sys.exit("{}用户已经被锁定,请切换用户".format(lock)) #退出程序并提示账户被锁定
with open("C:\\user.txt",'r') as user_lines: #如果没有锁定账户,打开注册账号文件
user_lines = user_lines.readlines() #获取注册账号文件中的内容
for a in user_lines: #将文件中的内容作为每一行的数据进行循环
user,passwd = a.strip('\n').split() #获取到每一行的账号名和密码
if account == user: #当账号名存在时
j = 0 #设置用户输入密码的次数
while j < 3 : #当j < 3 时
user_password = (input("\033[33m 请输入您的密码:\033[0m".center(20))) #获取到用户输入的密码
if user_password == passwd: #如果用户输入的密码与文件中的密码一致时
print("\033[33m 登录成功,{}用户 \033[0m".format(user)) #输出页面,提示登录成功,并退出程序
sys.exit()
else:
if j != 2: #当用户输入次数小于3次时
print('用户 %s 密码错误,请重新输入,还有 %d 次机会' % (user, 2 - j))#提示用户还有几次机会输入密码
j += 1 #已输入的次数加一
else:
with open("C:\\lock.txt", 'a') as lock_line:#如果用户输入的次数达到上限,打开锁定用户文件,将账号名写入
lock_line.write(user+"\n")
sys.exit("您的输入有误,{}将被锁定".format(user))
if i != 2: # i=2时,是最后一次机会,不用在提示还剩余0次机会了 #如果输入的账户名不到三次
print('用户 %s 不存在,请重新输入,还有 %d 次机会' % (account, 2 - i)) # 提示剩余输入次数
i += 1 # 用户输入账户名的次数加一
else:
sys.exit("退出系统") #退出系统
lock文件内容:
user文件内容
代码检测:
当输入锁定账户时:
欢迎来到用户登录系统:
请输入您的账号: 小李
小李用户已经被锁定,请切换用户
当输入正确用户和密码时
欢迎来到用户登录系统:
请输入您的账号: 小华
请输入您的密码: 123
登录成功,小华用户
当输入正确的用户但是三次密码错误时:
欢迎来到用户登录系统:
请输入您的账号: 小华
请输入您的密码: 12
用户 小华 密码错误,请重新输入,还有 2 次机会
请输入您的密码: 12
用户 小华 密码错误,请重新输入,还有 1 次机会
请输入您的密码: 12
您的输入有误,小华将被锁定
当用户名三次输入错误:
欢迎来到用户登录系统:
请输入您的账号: 小周
小周用户不存在,剩余2次机会
欢迎来到用户登录系统:
请输入您的账号: 小王
小王用户不存在,剩余1次机会
欢迎来到用户登录系统:
请输入您的账号: 小童
退出系统