Встроенный строковый метод Python isdecimal() — это удобный и эффективный инструмент для проверки, состоят ли все символы в строке только из цифр. Это делает его полезным при проверке ввода данных или обработке текстовых данных, где числа играют важную роль.
- Что такое?
- Когда использовать?
- Пример 1: с помощью строкового метода isdecimal()
- Пример 2: с использованием isdecimal()
- Различие между методами isdecimal(), isdigit() и isnumeric()
- 1. isdecimal()
- 2. isdigit()
- 3. isnumeric()
- Заключение
Что такое?
Метод 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
Пример 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
Различие между методами 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!
2. isdigit()
Этот метод определяет, являются ли все символы в строке цифрами, включая десятичные дроби и некоторые другие специальные символы, например, верхние индексы.
Например, представьте себе исторический музей в США, где проводится презентация об американской революции. На слайдах презентации есть сноски с надстрочными цифрами, которые указывают на ссылки.
reference = "4²" print(reference.isdigit()) print(reference.isdecimal())
Вывод: числа надстрочных индексов не являются десятичными числами, а являются цифрами.
True False
3. isnumeric()
Этот метод — самый универсальный из трёх. Он возвращает значение True, если все символы в строке представляют собой числовые символы, включая десятичные дроби, цифровые символы других языков или систем, такие как римские цифры или дроби.
Например, на выставке в США, посвящённой римской истории, посетителей могут попросить ввести римские цифры на интерактивном стенде.
roman_numeral = "Ⅶ" print(roman_numeral.isnumeric()) print(roman_numeral.isdecimal())
Вывод: римские цифры — это не десятичные дроби и не обычные цифры, о которых мы думаем, а числовые символы.
True False
Заключение
Метод isdecimal в Python предлагает простой и эффективный способ проверки наличия десятичных символов в строке. Этот метод может быть полезен для решения различных задач, особенно в сочетании с другими условиями.
Например, мы можем использовать метод isdecimal для проверки, является ли строка числом, содержащим десятичные знаки. Это отличается от методов isdigit() и isnumeric(), которые проверяют только наличие цифр в строке.