简单的密码检查,重试次数有限

时间:2017-07-31 09:17:18

标签: python python-3.x while-loop passwords

我正在尝试使用有限的重试进行简单的密码检查。

如果用户输入错误的密码,程序会提示重试(3次重试)。 重试失败3次后,程序提示用户已达到最大重试次数。 如果用户密码输入正确,程序将“授予访问权限”。

import sys
print (sys.version)
pssw = '' 
attempt = 0   

print('Please key in your password.') 

while (pssw != "remember") and (attempt < 3):    
    pssw = input()  
    attempt = attempt + 1

print ('No that is not correct. Try again.')

if attempt == 3:
    print ('Sorry you have reached maximum number of attempts')
    break

if (pssw == "remember"):
    print('Access Granted!') 

问题#1

期望:在输入正确的密码“记住”后,程序应打印输出“访问授权”

但节目输出:

3.6.2 (v3.6.2:5fd33b5926, Jul 16 2017, 20:11:06) 
Please key in your password.
remember
No that is not correct. Try again.
Access Granted!

问题#2

期望:在上次尝试时输入正确的密码“记住”后,程序应打印输出“已授予访问权限”

但节目输出:

Please key in your password.
test
No that is not correct. Try again.
test
No that is not correct. Try again.
remember
No that is not correct. Try again.
Sorry you have reached maximum number of attempts

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我将解释您的错误,因为有人发布了另一种代码方法。 我认为你理解你的错误并且不只是复制另一个代码是非常重要的。

首先,行break不正确,因为中断不能在循环之外,而是使用sys.exit()

问题#1

如果输入正确的密码,程序将退出循环并执行下一个语句:

print ('No that is not correct. Try again.')

if attempt == 3:
    print ('Sorry you have reached maximum number of attempts')
    break

if (pssw == "remember"):
    print('Access Granted!') 

因此它将打印&#34;不,这是不正确的。再试一次。&#34;。

检查尝试是否等于3.这不是因为您在第一次尝试时输入了正确的密码。

检查密码是否等于&#34;记住&#34;。它是,因此程序将打印&#34;访问被授予&#34;。

问题#2

您的第二个输出与您发布的代码不一致 您发布的代码的正常输出是:

Please key in your password.
test
test
remember 
No that is not correct. Try again.
Sorry you have reached maximum number of attempts

这是您发布的代码的正常输出,但无论如何都是错误的。

这是因为如果输入错误的密码,循环将继续,因此再次询问您的密码而不打印任何内容。