Задать вопрос
@qw0cry

Как в моем случае правильно сделать проверку на ввод числа пользователем?

в общем,делаю код-игру,в которой пользователь должен угадать число.
после входа в меню от пользователя требуется ввести цифру с выбором сложности,после чего выдается характеристика данного уровня(их всего шесть + пункт выхода из игры.)
как сделать проверку того,что вводит пользователь? Если он вводит не то число,то проблем не возникает,потому что переменная для сравнения преобразуется в int,но как быть,если пользователь вводит любой другой символ?

ошибка:
if int(lvl) == 1:
^^^^^^^^
ValueError: invalid literal for int() with base 10: 'не число'
  • Вопрос задан
  • 1774 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Варианта 2:
1.Перед преобразованием проверять сообщение с помощью isdigit().
2.Ловить соответствующий Exeption и обрабатывать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@EugeneVKruglov
if type(lvl) is not int:
    print('Переменная не является целым числом')
Ответ написан
@Vaskey
Для проверки ввода пользователем числа в Python можно использовать функцию isdigit(). Она возвращает True, если строка состоит только из цифр, и False в противном случае.

Пример:

lvl = input("Введите уровень сложности: ")

if lvl.isdigit():
    lvl = int(lvl)
    if lvl == 1:
        # код для уровня 1
    elif lvl == 2:
        # код для уровня 2
    # ...
else:
    print("Вы ввели не число")

Здесь мы сначала проверяем, состоит ли строка lvl только из цифр, с помощью метода isdigit(). Если это так, то мы преобразуем ее в целое число lvl = int(lvl) и продолжаем сравнение с ожидаемыми значениями. Если же lvl содержит другие символы, выводим сообщение об ошибке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽