Встроенный строковый метод Python isdecimal() — это удобный и эффективный инструмент для проверки, состоят ли все символы в строке только из цифр. Это делает его полезным при проверке ввода данных или обработке текстовых данных, где числа играют важную роль.

Содержание

Что такое?

Метод isdecimal() — это встроенный метод для работы со строками в Python. Он проверяет, все ли символы в строке являются десятичными числами.

«Десятичные» символы — это символы, которые могут образовывать числа в десятичной системе счисления, то есть 0, 1, 2, …, 9. Если в строке есть символы, отличные от десятичных, или если строка пустая, метод вернёт значение `False`. Если же все символы в строке являются десятичными, метод вернёт `True`.

Синтаксис:

string.isdecimal()

Метод Python string isdecimal не принимает никаких параметров.

Метод Python isdecimal() возвращает:

  • False: если все символы в строке являются десятичными символами (т. е. от 0 до 9).
  • True: в противном случае (например, если строка содержит недесятичные символы или если строка пуста).

Когда использовать?

Основное применение строкового метода isdecimal() в Python – это проверка ввода пользователя, в частности, когда нам нужно убедиться, что введённое значение является положительным целым числом.

Рассмотрим некоторые примеры использования и попытаемся понять, как можно применять метод isdecimal().

Пример 1: с помощью строкового метода isdecimal()

В США почтовые индексы состоят из пяти цифр. В Python мы можем использовать функцию isdecimal(), чтобы проверить, является ли ввод допустимым форматом почтового индекса. Однако стоит отметить, что эта функция не проверяет подлинность индекса, а только его формат.

def is_valid_zip(zip_code):
    return len(zip_code) == 5 and zip_code.isdecimal()

zip_code_1 = input('Enter the ZIP code: ')
print(is_valid_zip(zip_code_1))

zip_code_2 = input('Enter another Zip code: ')
print(is_valid_zip(zip_code_2))

Вывод: в этом примере zip_code_1 является корректным почтовым индексом, так как он состоит только из цифр от 0 до 9. В отличие от него, в zip_code_2 присутствует символ, не являющийся цифрой.

Enter the ZIP code: 45875
True
Enter another Zip code: 125d4
False

Пример 1: с помощью строкового метода isdecimal()

Пример 2: с использованием isdecimal()

Чтобы избежать ошибки ValueError при преобразовании строковых значений, содержащих символы, отличные от десятичных, в целые числа, можно воспользоваться методом isdecimal().

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

def convert_price(price):
    if price.isdecimal():
        return int(price)
    else:
        print(f"Cannot convert '{price}' to an integer.")


print(convert_price("555"))
print(convert_price("11.11"))
print(convert_price("$122"))
print(convert_price("23+45"))

Вывод: строка с десятичным значением будет преобразована в целое число и возвращена как результат, а для других строк мы получим сообщение о том, что результат не определён (None).

555
Cannot convert '11.11' to an integer.
None
Cannot convert '$122' to an integer.
None
Cannot convert '23+45' to an integer.
None

Пример 2: с использованием isdecimal()

Различие между методами isdecimal(), isdigit() и isnumeric()

Методы isdecimal(), isdigit() и isnumeric() кажутся похожими, но у них есть некоторые ключевые различия. Давайте углубимся в каждый из них на примерах и выделим эти различия.

1. isdecimal()

Этот метод возвращает значение True, если все символы в строке являются десятичными числами (0–9).

Пример: Предположим, мы разрабатываем систему для магазина в США для ввода количества продуктов.

Product = "8500"

if  Product.isdecimal():
    print("Valid Product number input!")
else:
    print("Invalid Product number!")

Вывод: Здесь isdecimal() проверяет, является ли введенный номер продукта просто числом от 0 до 9.

Valid Product number input!

Строковый isdecimal метод в Python

2. isdigit()

Этот метод определяет, являются ли все символы в строке цифрами, включая десятичные дроби и некоторые другие специальные символы, например, верхние индексы.

Например, представьте себе исторический музей в США, где проводится презентация об американской революции. На слайдах презентации есть сноски с надстрочными цифрами, которые указывают на ссылки.

reference = "4²"

print(reference.isdigit())
print(reference.isdecimal())

Вывод: числа надстрочных индексов не являются десятичными числами, а являются цифрами.

True
False

Сравнение строки isdigit с методом string isdecimal в Python

3. isnumeric()

Этот метод — самый универсальный из трёх. Он возвращает значение True, если все символы в строке представляют собой числовые символы, включая десятичные дроби, цифровые символы других языков или систем, такие как римские цифры или дроби.

Например, на выставке в США, посвящённой римской истории, посетителей могут попросить ввести римские цифры на интерактивном стенде.

roman_numeral = "Ⅶ"

print(roman_numeral.isnumeric())
print(roman_numeral.isdecimal())

Вывод: римские цифры — это не десятичные дроби и не обычные цифры, о которых мы думаем, а числовые символы.

True
False

isnumeric метод сравнивается с isdecimal строковым методом Python

Заключение

Метод isdecimal в Python предлагает простой и эффективный способ проверки наличия десятичных символов в строке. Этот метод может быть полезен для решения различных задач, особенно в сочетании с другими условиями.

Например, мы можем использовать метод isdecimal для проверки, является ли строка числом, содержащим десятичные знаки. Это отличается от методов isdigit() и isnumeric(), которые проверяют только наличие цифр в строке.

Добавить комментарий