← Все вопросы

Как проверить, что строка состоит только из цифр?

Задан 15 месяцев назад991 просмотров3 ответа
13

Проверяю ввод: хочу убедиться, что пользователь ввёл число, а не буквы. Есть ли готовый метод?

3 ответа

17

Осторожно с краевыми случаями: isdigit() вернёт False для отрицательных чисел ("-5" — там минус) и для дробей ("3.14" — там точка). Пустая строка "".isdigit() тоже False. Если нужно проверить, что строка вообще приводится к числу (включая знак и дробь), надёжнее так:

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False
Лев Степанов лучший ответ, жаль не принят · 15 месяцев назад
Галина Попова вот про минус и точку прям спасли, у меня баг из-за этого был 🙏 · 15 месяцев назад
14

s.isdigit() вернёт True, если строка непустая и состоит только из цифр.

5

Ещё есть isnumeric() и isdecimal() — они отличаются на экзотических символах (дроби-юникод, индексы). Для обычной задачи разницы не заметишь, бери isdigit().

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект