Python多重嵌套,而True继续/结束循环错误

时间:2017-05-07 01:08:58

标签: python loops while-loop

这是我项目软件中的一段代码:

def fun_1(self, i):
    print("")
    print("Welcome to Option 1: View Passwords")
    while True:
        print("")
        which_o1 = input("1: Input a New Account details \n2: Exit \nPlease Input the option number: ")

        if which_o1 == str(1):
            with open(str(i)+'.txt', 'a+') as file:
                while True:
                    print("")
                    web_n = input("Please Input Website name: ")
                    print("")
                    e_u = input("Please input email/username: ")
                    print("")
                    pass_w = input("Please input password: ")

                    while True:
                        print("")
                        sure = input("Website- " +web_n+"\nEmail/Username- "+e_u+"\nPassword- "+pass_w+"\nAre You sure about these details? Yes/No: ")

                        if (sure.lower()[0]) != 'y' and (sure.lower()[0]) != 'n':
                            print("")
                            print("Please input a valid response Yes/No!")
                            continue

                        elif (sure.lower()[0]) == 'y' and (sure.lower()[0]) != 'n':
                            list_log = [web_n, e_u, pass_w]
                            file.write(str(list_log) + '\n')
                            break
                            break
                            continue

                        elif (sure.lower()[0]) == 'n' and (sure.lower()[0]) != 'y':
                            break
                            continue

        elif which_o1 == str(2):
            return (i)
        else:
            print("")
            print("Please Enter a Valid Response!")
            continue

所以你可以看到它有3个True循环。在断开和循环循环时发生问题。如果你看到#34; pass_w"在中间的elif,它说elif (sure.lower()[0]) == 'y' and (sure.lower()[0]) != 'n':,其中我有2个休息和1个继续,因为我想要做的是,当那个elif执行它时,只有中间3而真实,第2个真实并且继续意味着循环第一个在代码开始时为true,但它只是在代码中间保持循环第3个而不是破坏它。

有没有办法让它变得可能?

1 个答案:

答案 0 :(得分:0)

首先,要了解在while循环内的break语句之后不能执行任何行。因此,放置多个休息和继续将无效。您需要重新构建代码。就个人而言,我建议实现try except语句,或者将一些代码放在函数内部,这样当你想要停止循环并将变量作为指示传递给函数的外部循环时,你可以return被叫了。

另一种选择可能是使用中断并继续,使用while循环检查的变量或变量集来决定它们是否应该继续。因此,在ifelif内,您可以设置exitfirstloop = True等,然后在while循环中检查while not exitfirstloop