Застрял в питон цикла «пока верно» - PullRequest
0 голосов
/ 10 сентября 2018

Я только что узнал о break и return в 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()

Я новичок в программировании, любые предложения будут оценены.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Н.В.М. Я здесь супер неправильно

Прежде всего, когда вы определяете функцию в 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. Если вы хотите, чтобы он выполнял 2-й оператор 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()

Это только форматирование. Но в этом примере код будет выполняться только один раз, потому что он сразу же возвращает функцию и выходит из нее.

Я думаю, что это может быть лучшим примером использования break и return:

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! Это очень весело и очень полезно.

0 голосов
/ 10 сентября 2018

С помощью конструкции for-else вы входите в блок else, только если цикл for не break, что всегда делает ваш цикл for, потому что i неизбежно становится 3 с вашим range генератор. Поэтому ваш бесконечный цикл while никогда не сможет достичь оператора return, который находится только в указанном блоке else.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...