Python- print()代码在不应该运行时运行

时间:2020-10-27 21:57:26

标签: python pycharm

免责声明:我对python非常缺乏经验(如果您无法通过问题回答)

我在您输入给定密码的地方做了这个基本代码。输入后,您可以进行测试或更改密码。每个选择都会导致不同的对话选项,依此类推(我使用了很多if:else and while:语句)。 但是,对于我的代码,正确回答测试问题后,它将显示“错误”消息和“您正确回答”消息。然后,当再次登录时,您必须输入密码TWICE才能注册您的输入。有人知道怎么修这个东西吗?我正在使用Pycharm btw

代码:

k = 1
t = 1
s = 1
passcodes = ["stanley"]
while s == 1:
    while k == 1:
        ans = input("Enter your password: ")
        if ans in passcodes:
            while t <= 10:
                print("Logging in.. [" + "*" * t + (10 - t) * " " + "]")
                t = t + 1
            if t > 10:
                print("Logged in")
                k = 2
        else:
            print("ACCESS DENIED")
    while k == 2:
        ans2 = input("Take test(1) or change password(2)? ")
        if ans2 == "1":
            ans3 = input("What is the square root of 4? ")
            if ans3 == "2":
                print("Correct. Thanks for participating!")
                k = 1
                t = 1
            if ans3 == "-2":
                print("Correct. Thanks for participating!")
                k = 1
                t = 1
            else:
                print("Wrong answer. Thanks for participating!")
                k = 1
                t = 1
        if ans2 == "2":
            change = input("New password: ")
            passcodes.clear()
            passcodes.append(change)
            print("New password " + change + " saved. Please sign back in.")
            k = 1
            t = 1
            ans = input("Enter your password: ")
        else:
            print("Signing out..")

错误消息:

1 个答案:

答案 0 :(得分:0)

嗨,您在if语句的顺序中有一个小错误 当ans3为2时,程序会重新检查ans3是否为-2,并且发现它为false,因此它将在else语句中运行代码以解决此问题,您只需要运行程序else即可,以防万一两个if语句为false 这是通过在“ if ans3 ==“ -2”:“行中使用elif语句来实现的: 它应该是“ elif ans3 ==“ -2”:“