2017-07-31 77 views
0

我试图做一个简单的密码检查与有限的重试。简单的密码检查与有限的重试

如果用户键入的密码错误,程序会提示再次尝试(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

期望值:键入正确的密码后“Re会员”在最后一次尝试,程序应打印输出‘授予访问权限’

但是程序输出:

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

你总是执行'print('不,那是不正确的,再试一次。')'。实际上,您录制的输出与您发布的代码不匹配。 – quamrana

+0

如果您需要一些帮助,您应该更新问题,以便代码和程序输出相互匹配。然后,您可以正确说明您的期望未被输出满足的程度。然后我们可以帮助你。 – quamrana

+0

谢谢,我从流程下面的帖子算出错了。期望是该程序应该执行“不,这是不正确的。在前2次错误的重试中再试一次。最后一次错误的重试应该执行'抱歉已达到最大尝试次数'。 – ameque

回答

0

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

首先,行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!') 

所以它会打印“没有那是不正确的。 再试一次。”。

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

检查密码是否等于“记住”。这是,所以程序将打印“访问授予”。

问题#2

你的第二个输出是不相干你发布的代码。
的代码正常输出你贴的是:

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

这是你发布的代码的正常输出,但它是错的呢。

这是因为如果tou键入一个不正确的密码,循环将会继续,因此再次询问您的密码而不打印任何内容。

+0

谢谢你解释我做错了什么,并强调使用'sys.exit()'而不是'break',我已经成功地编辑了代码并按预期工作。 – ameque