|
发表于 2023-7-7 23:52:18
|
显示全部楼层
看上去你的代码中有一个逻辑错误。当你在密码中输入"*"时,你的代码逻辑会无限地要求用户重新输入密码,但不会减少剩余的尝试次数(因为你在输入"*"的if条件语句中并没有将i减少)。
另外,关于"*"输入后程序直接结束的问题,这可能是由于在while循环的判断条件中,你是根据输入是否等于答案来决定是否退出循环的。如果"*"不等于答案,那么就会一直循环,除非达到次数限制。
修改一下代码,我认为以下的代码能够满足你的要求:
```python
yourinput = input("请输入密码:")
i = 3
answer = "dmDM"
while yourinput != answer and i > 0:
if "*" in yourinput:
yourinput = input("密码错误,您还剩下 %d 次机会,请重新输入:" % (i))
else:
i -= 1
if i > 0:
yourinput = input("密码错误,您还剩下 %d 次机会,请重新输入:" % (i))
else:
print("密码错误,次数用完了,十五分钟后尝试")
break
if yourinput == answer:
print("密码正确,进入程序")
```
这个版本的代码将只在密码错误且不包含"*"时减少尝试次数。另外,也确保了在达到尝试次数限制后将会退出循环,无论密码是否包含"*"。 |
|