Как остановить выполнение программы в python при выполнении условия
Перейти к содержимому

Как остановить выполнение программы в python при выполнении условия

  • автор:

Остановить программу

Author24 — интернет-сервис помощи студентам

Здравствуйте. Подскажите, как остановить программу, если при вводе строки в ней нет определенного символа? (Например, если в строке нет точки)
И как сделать так, чтобы программа после этого попросила заново ввести строку?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Остановить рекурсию
как остановить рекурсию, но с дальнейшим вызовом функций? выводит ошибки Previous line repeated 16.

Остановить программу
Доброго времени суток, есть такая проблема, я хочу удалить программу, но пишет, что программа.

Как остановить программу?
#include <iostream> #include <locale.h> using namespace std; int r; int othdecide; //.

Как остановить программу?
Здравствуйте. Сабж. #include "stdafx.h" #include "vector" #include "conio.h" using.

Эксперт по компьютерным сетям

5896 / 3353 / 1035
Регистрация: 03.11.2009
Сообщений: 9,997

ЦитатаСообщение от strangez Посмотреть сообщение

как остановить программу

ЦитатаСообщение от strangez Посмотреть сообщение

после этого попросила заново
так остановила или заново?
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
Если грубо, то так

1 2 3 4 5 6 7 8
print('Введите целое число: ') while True: n = input('-> ') if not n.isdecimal(): print('Это не число') else: print(n) break

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

как остановить программу?
я написал простенькую программу и у меня появилась проблема. когда запускаю программу вожу число.

Как остановить программу
Помогите как сделать, чтобы при cout << "Треугольник не существует" << endl; программа переставала.

Как остановить программу в конце?
Здравствуйте. Скажите, как остановить программу в самом конце. Допустим я запускаю программу.

Как принудительно остановить программу
Как принудительно остановить программу на Прологе во время выполнения какой-нибудь функции. Так.

Как остановить программу на минуту?
Гуглил минут тридцать пять на все лады- нет. Там и прием витамина С перед сном, и все виды.

Python + Telegram. Как остановить остановить polling?
Всем привет. Есть необходимость вводить номер с картинки (штрих код), картинка появляется в.

Или воспользуйтесь поиском по форуму:

Как остановить выполнение функции в Python?

Для остановки выполнения функции в Python можно использовать ключевой оператор return . Когда функция достигает этого оператора, она прекращает выполнение и возвращает указанное значение.

def func(): print('Часть функции, где код сработает') x = 11 return x # Функция возвращает значение переменной x и завершает свою работу. print('Эта часть функции - нет') y = 22 return y a = func() print(a) # => Часть функции, где код сработает # => 11 

Как выйти из программы в Python 3

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда не активна

Как выйти из программы в Python 3 при помощи разных самых простых команд, методов, функций, операторов. Как корректно завершить работу программы и избежать различных ошибок?

Версия Python 3.5

Стандартный способ завершения программы в Python

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

Вызов sys.exit() — стандартный способ завершения программы в Python. Но это не так, если не подключить модуль, она не сработает.

import sys sys.exit()

Функция exit() для выхода из программы в Python 3

А вот функция exit() поможет не просто прервать выполнения цикла, но и полностью останавливает программу, код далее не читается. В переводе с английского exit — выход. Кстати, подключать для вызова и корректной работы данной функции в Python 3.5 никакой модуль не нужно — она прекрасно работает и так.

Также была найдена информация, что exit() является помощником для интерактивной оболочки (консоли), тем временем как sys.exit предназначен для использования в программах.

exit()

Кстати, функция quit() также работает для закрытия программы на Python и не требует для своей работы подключения каких-либо модулей.

quit()

Оператор break также может закрыть выполнение программы. Чаще он используется именно в цикле для выхода з него, выполнение программы продолжится далее по коду. В переводе с английского break — перерыв.

Завершение программы в Python

Однако, там не было объяснения какой метод лучше. Какой метод является наиболее «безаварийным»? И заодно: есть ли в Python понятие Autocloseable объектов? Если я сделаю ранее завершение программы, нужно ли мне будет закрывать файлы и т.д.?

Отслеживать
7,822 13 13 золотых знаков 25 25 серебряных знаков 55 55 бронзовых знаков
задан 17 окт 2015 в 16:11
1,347 4 4 золотых знака 17 17 серебряных знаков 34 34 бронзовых знака
17 окт 2015 в 16:23
Спасибо! Лучшим решением является использование sys.exit()
17 окт 2015 в 16:28
на счет второго: лучше закрывать/завершать все операции перед завершением программы
17 окт 2015 в 16:32

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Короткий ответ:
Лучше использовать sys.exit()

Механизм завершения процесса в Python реализован через бросание исключения SystemExit , таким образом можно просто создать подобное исключение и программа завершится:

raise SystemExit # или даже передать число -- код ошибки завершения программы raise SystemExit(1) 

Функция exit и аналогичная ей quit созданы для удобства работы в интерактивном режиме и их не рекомендуется использовать внутри скриптов:

They are useful for the interactive interpreter shell and should not be used in programs.

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

>>> quit Use quit() or Ctrl-D (i.e. EOF) to exit >>> exit Use exit() or Ctrl-D (i.e. EOF) to exit 

Использовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.

Есть также дополнительный метод для немедленного завершения программы: os._exit . У него довольно специфическая область применения, и там же есть замечание:

The standard way to exit is sys.exit(n)

Т.е. здесь даётся подтверждение того, что стандартный способ завершения программы — это вызов sys.exit .

Функция os.abort , упомянутая вами, использует механизм сигналов процессу. Конкретно при вызове этой функции будет передан сигнал SIGABRT , что в linux приведёт к завершению программы и созданию дампа памяти процесса. Подобное завершение рассматривается операционной системой как аварийное, поэтому не стоит использовать его для безаварийного завершения приложения.

По второй части вопроса. В Python есть развитая система контекстных менеджеров: классов, которые умеют работать с оператором with . Самое частое использование этого механизма встречается, вероятно, с файлами.

with open('filename') as my_file: print(my_file.read()) 

Этот код откроет файл, напечатает его содержимое на экран и закроет файл автоматически, даже если возникнет исключение при его печати.

Для классов, которые не приспособлены для работы с with есть функция closing в библиотеке contextlib . Из документации:

with closing(.open()) as f:

is equivalent to this:

f = .open() try: finally: f.close() 

Вот небольшой пример работы этой функции:

import contextlib class Closeable: def close(self): print('closed') with contextlib.closing(Closeable()): pass # печатает closed 

Теперь небольшое отступление о том, почему стоит использовать конструкцию with .

Известно, что программа завершится от любого необработанного исключения, а не только от SystemExit . Таким образом, если в вашем коде используются какие-то ресурсы, которые требуется правильным образом закрывать перед завершением работы, нужно оборачивать работу с ними в блоки try . finally . .

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

Так как выход из программы — это всего лишь брошенное исключение, то и в случае использования функции sys.exit закрытие открытых в операторе with ресурсов произойдёт корректно:

with contextlib.closing(Closeable()): sys.exit() # напечатает closed 

Вы можете писать также и свои классы, предоставляющие ресурсы или классы, оборачивающие другие, которые нужно уметь закрывать автоматически. Для этого используются методы __enter__ и __exit__ .

  1. Похожий вопрос с англоязычного StackOverflow
  2. Функции, добавляемые модулем site
  3. Документация по конструкции with
  4. Документация по функции closing
  5. Документация по исключению SystemExit
  6. Документация по функции os._exit
  7. Документация по функции sys.exit
  8. Документация по функции os.abort
  9. Описание системного сигнала SIGABRT

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *