Попробуйте / кроме оператора не перехватывает ValueError при преобразовании строки в int в Python 3 - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь преобразовать входные данные от пользователя только в целое число и обеспечить проверку ошибок, чтобы убедиться, что введенные пользователем данные верны. При проверке, чтобы убедиться, что пользователь ввел строку, программа должна отобразить ошибку, если введенное пользователем не целое число. Однако, как бы я ни структурировал эту попытку / исключение, она не отображает сообщение об ошибке, а вместо этого возвращает меня обратно в редактор Visual Studio и выдает исключение «недопустимый литерал для int () с основанием 10». Я искал и искал по всему этому сайту и другим, и все остальные с этой проблемой могут заставить его работать, используя этот код, но по какой-то причине для меня это просто не работает. Может кто-нибудь, пожалуйста, помогите мне выяснить, что идет не так, или, если есть другой способ проверить наличие целочисленного ввода, пожалуйста, укажите мне в этом направлении. Любая помощь приветствуется, и я прошу прощения, если на этом сайте уже есть подобный вопрос, но я не смог найти тот, который касается моего конкретного случая. Я использую интерпретатор Python 3.7 (хотя 3.8 - это то, что я установил, VS пока не поддерживает его). Вот мой код:

    try:
        a = int(input("Input: "))
    except ValueError:
        print(a)

1 Ответ

1 голос
/ 01 ноября 2019

Указанный вами код неверен.

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

Вот пример с try, за исключением того, что пользователь запрашивает, пока не будет допустимого ввода. Он также печатает путь к исполняемому файлу Python и его версии, чтобы быть уверенным, что это не проблема версии. IDE не должна быть в состоянии игнорировать попытку, кроме оператора.

Я никогда не слышал о чем-то подобном и предполагаю, что есть кое-что отличное от кода pycharm и Visual Studio.

import sys
print(sys.executable, sys.version_info)  # for debugging only
while True:
    inp = input("Input: ")
    try:
        a = int(inp)
        break
    except ValueError:
        print("invalid input", inp, ". You should enter a number. Please retry")

print("A is", a)

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

...