python - начать - выход из if c#



Как выйти из условия if (6)

(Этот метод работает, if s, несколько вложенных циклов и другие конструкты, которые вы не можете легко break ).

Оберните код в его собственную функцию. Вместо break используйте return .

Пример:

def some_function():
    if condition_a:
        # do something and return early
        ...
        return
    ...
    if condition_b:
        # do something else and return early
        ...
        return
    ...
    return

if outer_condition:
    ...
    some_function()
    ...

https://src-bin.com

Какие существуют методы для преждевременного выхода из предложения if ?

Бывают случаи, когда я пишу код и хочу поставить оператор break внутри предложения if , только чтобы помнить, что они могут использоваться только для циклов.

Давайте возьмем следующий код в качестве примера:

if some_condition:
   ...
   if condition_a:
       # do something
       # and then exit the outer if block
   ...
   if condition_b:
       # do something
       # and then exit the outer if block
   # more code here

Я могу думать об одном способе сделать это: предполагая, что случаи выхода случаются внутри вложенных операторов if, заверните оставшийся код в большом блоке else. Пример:

if some_condition:
   ...
   if condition_a:
       # do something
       # and then exit the outer if block
   else:
       ...
       if condition_b:
           # do something
           # and then exit the outer if block
       else:
           # more code here

Проблема заключается в том, что больше мест выхода означает более вложенные / отступы.

В качестве альтернативы, я мог бы написать свой код, чтобы предложения if были как можно меньше и не требовали каких-либо выходов.

Кто-нибудь знает хороший / лучший способ выйти из предложения if ?

Если есть какие-либо связанные else-if и else, я полагаю, что выход будет пропустить их.


Answer #1

Вообще-то, не надо. Если вы гнездились «ifs» и взломали их, вы делаете это неправильно.

Однако, если вам необходимо:

if condition_a:
   def condition_a_fun():
       do_stuff()
       if we_wanna_escape:
           return
   condition_a_fun()
if condition_b:
   def condition_b_fun():
       do_more_stuff()
       if we_wanna_get_out_again:
           return
   condition_b_fun()

Обратите внимание, что функции не должны быть объявлены в инструкции if, они могут быть объявлены заранее;) Это был бы лучший выбор, так как он избежит необходимости реорганизовывать уродливое, если / затем позже.


Answer #2

Для того, что на самом деле было задано, мой подход заключается в том, чтобы положить их, if s внутри петли с одним циклом

while (True):
    if (some_condition):
        ...
        if (condition_a):
            # do something
            # and then exit the outer if block
            break
        ...
        if (condition_b):
            # do something
            # and then exit the outer if block
            break
        # more code here
    # make sure it is looped once
    break

Попробуй это:

conditions = [True,False]
some_condition = True

for condition_a in conditions:
    for condition_b in conditions:
        print("\n")
        print("with condition_a", condition_a)
        print("with condition_b", condition_b)
        while (True):
            if (some_condition):
                print("checkpoint 1")
                if (condition_a):
                    # do something
                    # and then exit the outer if block
                    print("checkpoint 2")
                    break
                print ("checkpoint 3")
                if (condition_b):
                    # do something
                    # and then exit the outer if block
                    print("checkpoint 4")
                    break
                print ("checkpoint 5")
                # more code here
            # make sure it is looped once
            break

Answer #3

Итак, я понимаю, что вы пытаетесь вырваться из внешнего, если блок кода

if some_condition:
    ...
    if condition_a:
       # do something
       # and then exit the outer if block
       ...
    if condition_b:
       # do something
       # and then exit the outer if block
# more code here

Один из путей этого заключается в том, что вы можете проверить наличие ложного состояния во внешнем блоке if, который затем неявно выходит из блока кода, затем вы используете блок else, чтобы вложить другой ifs, чтобы что-то сделать

if test_for_false:
    # Exit the code(which is the outer if code)

else:
    if condition_a:
        # Do something

    if condition_b:
        # Do something

Answer #4

Эффективно то, что вы описываете, - это операторы goto, которые, как правило, довольно сильно подкрашены. Ваш второй пример намного легче понять.

Тем не менее, чище все же было бы:

if some_condition:
   ...
   if condition_a:
       your_function1()
   else:
       your_function2()

...

def your_function2():
   if condition_b:
       # do something
       # and then exit the outer if block
   else:
       # more code here

Answer #5
from goto import goto, label

if some_condition:
   ...
   if condition_a:
       # do something
       # and then exit the outer if block
       goto .end
   ...
   if condition_b:
       # do something
       # and then exit the outer if block
       goto .end
   # more code here

label .end

(На самом деле не используйте это, пожалуйста.)





control-flow