陷入“ while True”循环python中

时间:2018-09-10 00:46:36

标签: python while-loop

我刚刚了解了Python中的breakreturn

在我编写的熟悉这两个语句的玩具代码中,我陷入了一个循环,但我不知道为什么。这是我的代码:

def break_return():
    while True:
        for i in range(5):
            if i < 2:
                print(i)
            if i == 3:
                break
        else:
            print('i = ', i)
            return 343
break_return()

我是编程新手,任何建议将不胜感激。

2 个答案:

答案 0 :(得分:4)

使用for-else构造,如果else循环不for,则仅进入break块,而for循环总是这样做是因为{{ 1}}不可避免地成为i生成器的3。因此,您的无限range循环将永远无法到达while语句,该语句仅在所说的return块中。

答案 1 :(得分:-2)

nvm我在这里超级错了

首先,当您在Python中定义函数时,该函数中包含的所有代码都应位于同一缩进块中。考虑到这一点,您的代码将如下所示:

def break_return():
    while True: 
        for i in range(5):
            if i < 2:
                print(i)
            if i == 3:
                break
        else:
            print('i = ', i)
            return 343
break_return()

我看到的下一个问题是您的else语句未正确使用if语句格式化。如果您打算在第二条if语句中使用它,则您的代码应如下所示:

def break_return():
    while True: 
        for i in range(5):
            if i < 2:
                print(i)
            if i == 3:
                break
            else:
                print('i = ', i)
                return 343
break_return()

这只是格式化。但是在此示例中,该代码仅运行一次,因为它会立即返回并退出该函数。

我认为这可能是同时使用breakreturn的更好示例:

def break_return(value):
    for i in range(5):
        print(i)
        if i == 3:
            break #This exits the for loop
        if i == 4:
            print("This won't print!")
            #Won't print because the loop "breaks" before i ever becomes 4
    return value * 2 #Returns the input value x 2

print(break_return(30)) #Display the return value of break_return()

这说明break如何退出for循环以及return如何从函数返回值。

上面的代码输出为:

0  #Value of i
1  #Value of i
2  #Value of i
3  #Value of i
60 #The value returned by the function

很高兴听到您正在学习Python!这很有趣,而且非常有用。