#python #exit-code
Вопрос:
Пытаюсь заставить свой код выйти при нажатии кнопки ввода , и я сталкиваюсь с a ValueError: invalid literal for int() with base 10: ''
, но он говорит мне, что моя ошибка на линии simulations_num = int(simulations)
. У кого-нибудь есть идея?
simulations = input("How many times would you like to run the simulation? ")
# Invalid answer, system exit
if (not simulations) or int(simulations) <=0:
print("That is not a valid number of simulations.")
print("Shutting down.")
SystemExit
simulations_num = int(simulations)
#the rest of my code comes here
Я также безуспешно if simulations == ''
пытался.
Я заметил, что если simulations_num = int(simulations)
это не так, код работает нормально, но эта часть кода (или что-то подобное) необходима для остальной части кода
Комментарии:
1. Это
ValueError
от попытки преобразовать букву/символ в int.2.
SystemExit
это выражение, а не вызов функции выхода.
Ответ №1:
Вам нужно raise SystemExit()
или просто использовать sys.exit()
(что делает то же самое).
Комментарии:
1. Я думал, что SystemExit по какой-то причине был взаимозаменяем с sys.exit (). Спасибо вам за вашу помощь
2. @Мистер Оддикус, это так, важная часть в том, что вам нужно поднять его, иначе его просто проигнорируют.
Ответ №2:
вам нужно вызвать ошибку или, по крайней мере, использовать sys.exit(0)
. Принцип работы заключается в следующем:
import sys
if not input(': ').lower() in ['yes','y','1']:
sys.exit(0)
применительно к вашему примеру было бы так
simulations = input("How many times would you like to run the simulation? ")
import sys
# Invalid answer, system exit
if (not simulations) or int(simulations) <=0:
print("That is not a valid number of simulations.")
print("Shutting down.")
sys.exit(0)
simulations_num = int(simulations)
#the rest of my code comes here
raise RuntimeError()
также было бы хорошо
Ответ №3:
Чтобы обратиться к вашему коду:
Прежде всего, вам нужно добавить ключевое слово «поднять» перед SystemExit, чтобы оно работало должным образом. Во-вторых, чтобы создать ситуацию, в которой вам нужно нажать Enter, чтобы программа вышла, вы можете использовать input().
Исправленная версия:
simulations = input("How many times would you like to run the simulation? ")
# Invalid answer, system exit
if (not simulations) or int(simulations) <= 0:
print("That is not a valid number of simulations.")
print("Shutting down.")
input("Press Enter to exit...")
raise SystemExit("Exiting... Reason: invalid input!")
simulations_num = int(simulations)
# the rest of my code comes here