python-3.x - python:如果条件不满足while循环
问题描述
我正在尝试编写有关输入密码的代码。用户有三次尝试输入密码。如果新的尝试是正确的或用户总共尝试了 3 次,则循环应该结束。但是,我的代码无法运行输入正确密码的部分。那么,我该如何摆脱破解?请帮我!
passwd='pass1'
enter=input('Please enter the password:')
counter = 0
while counter in range(3):
if counter==0:
if enter==passwd:
print('Access granted')
break
elif enter!=passwd:
result=input('That is incorrect, please try again:')
counter=counter+1
elif counter==1:
if enter==passwd:
print('Access granted')
break
elif enter!=passwd:
result=input('That is incorrect, please try again:')
counter=counter+1
elif counter==2:
if enter==passwd:
print('Access granted')
break
elif enter!=passwd:
print('Access denied')
counter=counter+1
解决方案
考虑基于所需结果而不是计数器循环:
counter = 1
passwd = 'pass1'
enter = ''
while enter != passwd:
enter = input('Please enter the password:')
if (enter != passwd):
counter += 1
if (counter > 3):
print("Access denied")
break
else:
print('That is incorrect, please try again:')
else:
print("Access is granted")
我试图保留您的相同消息,这使代码更加复杂。显然,它可以通过简化所需的步骤来进一步减少。
推荐阅读
- java - 如何在 AnyLogic(不是文档函数表)中导出 Java 代码?
- python - 确定项目/包所需的最低python包版本的方法?
- javascript - Discord.js GuildMember#roles 有时似乎未定义
- reactjs - 单击图像链接到另一个网站 React.JS
- c++ - 从模板类中提取模板
- python - pydub.playback.play() 不播放声音
- c# - 如何不将字符串实例与换行符匹配?
- cs50 - 如何正确地重新提示 mario.c 中的语句?
- azure-pipelines - 限制从 Azure DevOps 管道中进行全局代理计算机更改的能力
- django - 如何在 Django 中将查询集过滤到当前用户