Как после if завершить работу программы python

Какие существуют методы для преждевременного выхода из условия 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 были как можно меньше и не требовали никаких выходов.

How to keep a program running, after closing the SSH session

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

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

Roman 15 Янв 2010 в 08:20

11 ответов

Лучший ответ

(Этот метод работает для 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() .
yanxun 7 Авг 2018 в 13:23

Используйте return в условии if, которое вернет вас из функции, так что вы можете использовать return, чтобы нарушить условие if.

Nikhil Parashar 18 Окт 2018 в 10:13

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

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 в что-то сделать

if test_for_false: # Exit the code(which is the outer if code) else: if condition_a: # Do something if condition_b: # Do something
Romeo 31 Май 2018 в 12:43

Есть еще один способ, который не зависит от определения функций (потому что иногда он менее читабелен для небольших фрагментов кода), не использует дополнительный внешний цикл while (который может нуждаться в особой оценке в комментариях, чтобы даже быть понятным на первый взгляд) , не использует goto (. ) и, самое главное, позволяет вам сохранить уровень отступа для внешнего, если вам не нужно начинать вложение.

if some_condition: . if condition_a: # do something exit_if=True # and then exit the outer if block if some condition and not exit_if: # if and only if exit_if wasn’t set we want to execute the following code # keep doing something if condition_b: # do something exit_if=True # and then exit the outer if block if some condition and not exit_if: # keep doing something

Читайте также:
Программа для настройки фоллаут 4

Да, это также требует второго взгляда на читабельность, однако, если фрагменты кода малы, это не требует отслеживания циклов while, которые никогда не повторятся, и после понимания того, для чего нужны промежуточные if, это легко читается, все в одно место и с таким же отступом.

Python If Statements | Python Tutorial #10

И это должно быть довольно эффективно.

DonQuiKong 7 Ноя 2018 в 08:24

По сути, вы описываете операторы 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
Smashery 15 Янв 2010 в 05:29

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

Однако, если вы должны:

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, они могут быть объявлены заранее;) Это был бы лучший выбор, так как это позволит избежать необходимости рефакторинга уродливого if / then позже.

Enki 16 Апр 2010 в 03:02

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

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
izzulmakin 8 Сен 2015 в 08:16
if some_condition and condition_a: # do something elif some_condition and condition_b: # do something # and then exit the outer if block elif some_condition and not condition_b: # more code here else: #blah if
ghostdog74 15 Янв 2010 в 05:28

Вы можете эмулировать функциональность goto с исключениями:

try: # blah, blah . # raise MyFunkyException as soon as you want out except MyFunkyException: pass

Отказ от ответственности: я только хочу представить вашему вниманию возможность действовать таким образом, но ни в коем случае не одобряю это как разумное в нормальных обстоятельствах. Как я уже упоминал в комментарии к вопросу, структурирование кода таким образом, чтобы избежать византийских условностей, в первую очередь, предпочтительнее. 🙂

Michał Marczyk 15 Янв 2010 в 05:35

while some_condition: . if condition_a: # do something break . if condition_b: # do something break # more code here break
Thomas Eding 19 Янв 2010 в 02:05
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

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

Источник: question-it.com

Читайте также:
Топ программ для записи звука

Python. Урок 5. Условные операторы и циклы

Follow us on Google Plus Follow us on rss

В этом уроке рассмотрим оператор ветвления if и операторы цикла while и for. Основная цель – это дать общее представление об этих операторах и на простых примерах показать базовые принципы работы с ними.

Условный оператор ветвления if

Оператор ветвления if позволяет выполнить определенный набор инструкций в зависимости от некоторого условия. Возможны следующие варианты использования.

1. Конструкция if

Синтаксис оператора if выглядит так.

if выражение: инструкция_1 инструкция_2 . инструкция_n

После оператора if записывается выражение. Если это выражение истинно, то выполняются инструкции, определяемые данным оператором. Выражение является истинным, если его результатом является число не равное нулю, непустой объект, либо логическое True. После выражения нужно поставить двоеточие “:”.

ВАЖНО: блок кода, который необходимо выполнить, в случае истинности выражения, отделяется четырьмя пробелами слева!

if 1: print(«hello 1»)

Напечатает: hello 1

a = 3 if a == 3: print(«hello 2»)

Напечатает: hello 2

a = 3 if a > 1: print(«hello 3»)

Напечатает: hello 3

lst = [1, 2, 3] if lst : print(«hello 4»)

Напечатает: hello 4

2. Конструкция if – else

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

if выражение: инструкция_1 инструкция_2 . инструкция_n else: инструкция_a инструкция_b . инструкция_x
a = 3 if a > 2: print(«H») else: print(«L»)
a = 1 if a > 2: print(«H») else: print(«L»)

Условие такого вида можно записать в строчку, в таком случае оно будет представлять собой тернарное выражение.

a = 17 b = True if a > 10 else False print(b)

В результате выполнения такого кода будет напечатано: True

3. Конструкция if – elif – else

Для реализации выбора из нескольких альтернатив можно использовать конструкцию if – elif – else.

if выражение_1: инструкции_(блок_1) elif выражение_2: инструкции_(блок_2) elif выражение_3: инструкции_(блок_3) else: инструкции_(блок_4)
a = int(input(«введите число:»)) if a 0: print(«Neg») elif a == 0: print(«Zero») else: print(«Pos»)

Если пользователь введет число меньше нуля, то будет напечатано “Neg“, равное нулю – “Zero“, большее нуля – “Pos“.

Оператор цикла while

Оператор цикла while выполняет указанный набор инструкций до тех пор, пока условие цикла истинно. Истинность условия определяется также как и в операторе if. Синтаксис оператора while выглядит так.

while выражение: инструкция_1 инструкция_2 . инструкция_n

Выполняемый набор инструкций называется телом цикла.

a = 0 while a 7: print(«A») a += 1

Буква “А” будет выведена семь раз в столбик.

Пример бесконечного цикла.

a = 0 while a == 0: print(«A»)

Операторы break и continue

При работе с циклами используются операторы break и continue.

Оператор break предназначен для досрочного прерывания работы цикла while.

a = 0 while a >= 0: if a == 7: break a += 1 print(«A»)

В приведенном выше коде, выход из цикла произойдет при достижении переменной a значения 7. Если бы не было этого условия, то цикл выполнялся бы бесконечно.

Оператор continue запускает цикл заново, при этом код, расположенный после данного оператора, не выполняется.

a = -1 while a 10: a += 1 if a >= 7: continue print(«A»)

При запуске данного кода символ “А” будет напечатан 7 раз, несмотря на то, что всего будет выполнено 11 проходов цикла.

Оператор цикла for

Оператор for выполняет указанный набор инструкций заданное количество раз, которое определяется количеством элементов в наборе.

for i in range(5): print(«Hello»)

В результате “Hello” будет выведено пять раз.

Внутри тела цикла можно использовать операторы break и continue, принцип работы их точно такой же как и в операторе while.

Если у вас есть заданный список, и вы хотите выполнить над каждым элементом определенную операцию (возвести в квадрат и напечатать получившееся число), то с помощью for такая задача решается так.

Читайте также:
Как отключить пароль администратора при установке программ

lst = [1, 3, 5, 7, 9] for i in lst: print(i ** 2)

Также можно пройти по всем буквам в строке.

word_str = «Hello, world!» for l in word_str: print(l)

Строка “Hello, world!” будет напечатана в столбик.

На этом закончим краткий обзор операторов ветвления и цикла.

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

Раздел: Python Уроки по Python Метки: Python, Уроки Python

Python. Урок 5. Условные операторы и циклы : 41 комментарий

  1. Ирина 23.09.2017 Подскажите, пожалуйста, что делать, если знаки” == “и “!=” не выделяются отдельным цветом и, соответственно, не дают никакого результата?
  1. writer Автор записи 24.09.2017 Приведите пример код пожалуйста!
  1. vitek 29.07.2018 print(“0 == False”)
  1. Максим 06.08.2018 Если верно понимаю, Вы не правильно записываете команду
    Получается так, что Вы говорите программе, чтобы она описала строчное значение, указанное в “”
    В данным случае, Вам нужно применить оператор if и написать:
    if name == “0”:
    print (“False”) Таким образом вы даете программе условие, что: если переменная равна значению “0” (строчному значению)
    то выводи False
  1. writer 04.12.2018 Можно вот так:
    >>> name=[“Иван”, “ваня”, “ванюша”]
    >>> if “Иван” in name:
    print(“hello!”) hello!
  1. rrrrr 21.10.2019 nope
  1. Илья 25.05.2020 def find_NOK(number1, number2):
    if number1 < number2:
    number1, number2 = number2, number1
    for x in range(number2):
    if number1*(x+1)%number2 == 0:
    return number1*(x+1)
    return number1*number2 a, b = map (int, input().split(‘, ‘))
    print(find_NOK(a, b))
  1. writer 06.10.2019 Это l – от слова letter – буква. Хотя сейчас бы я поставил символ ‘c’ вместо нее.
  1. Айдар 09.02.2020 Решил проблему сам
  1. Jam 13.07.2020 Функция range генерирует все числа указанные в диапазоне не включая последнее.
    Поэтому:
    range(1, max(a) + 1)
  1. Надыр 30.08.2020 Там f==5

Источник: devpractice.ru

Циклы for и while, операторы break и continue, волшебное слово else

Python 3 логотип

В этой статье я расскажу о циклах for и while, операторах break и continue, а также о слове else, которое, будучи употребленное с циклом, может сделать программный код несколько более понятным.

Цикл while

While — один из самых универсальных циклов в Python, поэтому довольно медленный. Выполняет тело цикла до тех пор, пока условие цикла истинно.

Цикл for уже чуточку сложнее, чуть менее универсальный, но выполняется гораздо быстрее цикла while. Этот цикл проходится по любому итерируемому объекту (например строке или списку), и во время каждого прохода выполняет тело цикла.

Оператор continue

Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла (for или while)

Оператор break

Оператор break досрочно прерывает цикл.

Слово else, примененное в цикле for или while, проверяет, был ли произведен выход из цикла инструкцией break, или же «естественным» образом. Блок инструкций внутри else выполнится только в том случае, если выход из цикла произошел без помощи break.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv — чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Источник: pythonworld.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru