一点沙 发表于 2023-1-25 16:42:05

验证密码的程序问题

写了一个验证密码的程序,计划是如果连续输入3次错误密码就自爆,但是为什么我输入两次就停止了?
from time import sleep
answer = input('本文为密码文,请输入密码:')
jh = 3
if '*' in answer:
    answer = input(f'密码中不能含有*,你还有{jh}次机会!请输入密码:')
elif answer == '我打死也不信有人能破译密码':
    print('密码正确,正在进入文章')
elif answer != '我打死也不信有人能破译密码':
    jh -=1
    answer = input(f'密码错误,你还有{jh}次机会!请输入密码:')
elif jh == 0:
    print('密码错误数达到3次,系统保护模式启动')
    print('10秒钟后系统将进行自爆')
    sleep(1)
    print('10')
    sleep(1)
    print('9')
    sleep(1)
    print('8')
    sleep(1)
    print('7')
    sleep(1)
    print('6')
    sleep(1)
    print('5')
    sleep(1)
    print('4')
    sleep(1)
    print('3')
    sleep(1)
    print('2')
    sleep(1)
    print('1')
    sleep(1)
    print('0')
    sleep(1)
    print('自爆')
   

linke.zhanghu 发表于 2023-1-25 16:42:06

这是你代码逻辑的问题
假设我们输入的密码是 aaa 那么程序的前两个判断都不成立会跑到第三个判断哪里也就是第八行哪里,判断结果会成立。
结果成立开始执行成立后的代码会 jih 会减一也就是jh=2 然后再次让你输入密码。
后面的判断也不会成立,相当于后面的代码完全不执行。那么从游戏开始到游戏结束你也就只输入了两次。你的设计压根没给你自己输第三次的机会。

ba21 发表于 2023-1-25 17:11:43

加循环 while

一点沙 发表于 2023-1-25 17:12:49

ba21 发表于 2023-1-25 17:11
加循环 while

我试一下去

sfqxx 发表于 2023-1-25 17:23:36

一点沙 发表于 2023-1-25 17:12
我试一下去

设置次数变量
如果变量(次数)==0
退出循环
开始:xxx = 3 #设置变量
while xxx != 0
执行指令
错误的话将变量-1

一点沙 发表于 2023-1-25 20:09:48

linke.zhanghu 发表于 2023-1-25 17:21
这是你代码逻辑的问题
假设我们输入的密码是 aaa 那么程序的前两个判断都不成立会跑到第三个判断哪里也就 ...

听懂了
页: [1]
查看完整版本: 验证密码的程序问题