Нажмите ENTER, чтобы выйти из программы на Python, которая не работает

#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