关于给3次机会验证密码的程序问题
secret1 = ('123')temp = input('请输入密码\n')
secret2 = str(temp)
i=1
while (secret1 != secret2) or (i<3):
if secret1 == secret2:
print('密码正确')
break
else:
if i < 3:
if '*' in secret2:
temp = input('请输入密码\n')
secret2 = str(temp)
else:
print('密码错误')
temp = input('请输入密码\n')
secret2 = str(temp)
i+=1
else:
print('密码错误')
print('次数用完')
break
print('结束')
求助各位大佬们
为什么我前两次输入带星号不会记入次数
最后一次输入带星号的 就显示密码错误 次数用完
本帖最后由 倒戈卸甲 于 2019-11-12 21:42 编辑
因为缩进。
else:
print('密码错误')
print('次数用完')
break
这几句与if i<3 是位于相同缩进的
而i f '*' in secret2:
temp = input('请输入密码\n')
secret2 = str(temp)
是if i<3 的下层缩进,一旦错误两次,第三次输入时i的值已经为3,根本不会被执行。
第三次输入时,要么输入正确,执行
if secret1 == secret2:
print('密码正确')
break
这几行语句,要么也不符合i<3,直接去执行
else:
print('密码错误')
print('次数用完')
break 倒戈卸甲 发表于 2019-11-12 21:38
因为缩进。
else:
print('密码错误')
那我如果想在这个程序上改 应该怎么改呢 本帖最后由 倒戈卸甲 于 2019-11-13 11:30 编辑
Ootme 发表于 2019-11-13 10:45
那我如果想在这个程序上改 应该怎么改呢
最简单的,把if '*' in secret2的情形放到if i<3前面去。 倒戈卸甲 发表于 2019-11-13 11:28
最简单的,把if '*' in secret2的情形放到if i<3前面去。
谢了终于弄好了
页:
[1]