Nano Hash - криптовалюты, майнинг, программирование

Как управлять ошибками ввода от пользователя в Python?

Я пытаюсь написать программу, которая принимает несколько входных данных от пользователя и делает все, что требуется, но я не хочу, чтобы выполнение программы останавливалось, когда пользователь дает некоторую ошибку на входе, а я хотел бы, чтобы эта строка программы повторялась снова и снова пока пользователь не введет допустимый ввод или не отменит операцию. Например, у меня есть следующая часть программы: -

# Error handling    
i=int(eval(input("Enter an integer: " )))
print(i)

Теперь, если пользователь вводит строку, возникает следующая ошибка:

Enter an integer: helllo
Traceback (most recent call last):
  File "C:/Users/Gaurav's PC/Python/Error Management.py", line 2, in <module>
    i=int(input("Enter an integer: " ))
ValueError: invalid literal for int() with base 10: 'helllo'

ЗДЕСЬ, я хочу, чтобы Python повторно запускал строку 2 только для действительного ввода, пока пользователь не введет правильный ввод или не отменит операцию, и после того, как правильный ввод будет передан, он должен продолжиться со строки 3. Как я могу это сделать?

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

17.09.2020

Ответы:


1

Вы можете поместить его в цикл while и проверить, является ли ввод целым числом или нет:

def is_integer(s):
    try:
        int(s)
        return True
    except ValueError:
        return False

while True:
    i = input("Enter an integer: " )
    if is_integer(i):
        print(i)
        break
17.09.2020
  • Что ж, это не будет повторяться и не будет просить пользователя снова ввести данные, пока он не передаст целое число. 17.09.2020
  • @Tushar Я обновил ответ; в основном вы можете поместить его в цикл while и сломать, когда ввод является целым числом 17.09.2020

  • 2

    Пытаться :

    while True: 
         try: 
             i = int(input("Enter number : ")) 
             break 
         except: 
             continue 
    

    Или вы можете использовать pass вместо продолжения.

    17.09.2020
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..