Проверьте, является ли данная строка числовой в Python
В этом посте мы обсудим, как проверить, является ли строка числовой в Python.
1. Использование float() функция
Идея состоит в том, чтобы преобразовать строку в число с плавающей запятой и вернуть false, если преобразование невозможно. Это можно легко сделать с помощью float(x) функция, которая преобразует строку x в число с плавающей запятой и повышает ValueError когда он не может преобразовать x в действительный поплавок.
Как проверить является ли строка числом python
Строки и числа это разные типы данных, потому строка не может быть числом и наоборот. Но если надо проверить, состоит ли строка только из строковых представлений цифр ‘1234567890’ можно, например, так:
s = 'Hello, World!' all(ch in '1234567890' for ch in s) # False s = '178359925' all(ch in '1234567890' for ch in s) # True
Python — как проверить является ли введенный текст числом?
Итак, типовая задача: получаем от пользователя строку, и хотим проверить — является ли введенный текст числом. Можно использовать сложный способ, а можно — простой. Сложный способ выглядит следующим образом: пытаемся сконвертировать введенную строку в число с плавающей запятой. После этого проверяем — если получилось, то строка — число, а если получаем ошибку, то увы — строка не число. В виде кода выглядит это все следующим образом:
number = input('Введите: ') print('Исходное:', number) try: number = float(number) print('Это число') except: print('Это не число!')
Т.е. используем метод обработки исключений(ошибок) try-except (я писал об этом вот тут).
Можно использовать простой метод Для этого в Python имеется метод isdigit(), который возвращает True в случае, если строка состоит из цифр (в строке должен иметься минимум один символ), и возвращает False в случае, если строка не содержит цифр.
В виде кода это выглядит следующим образом:
number = input('Введите: ') print('Исходное:', number) print(number.isdigit())
Как видите — все просто Как всегда — в случае возникновения вопросов пишите на почту, или в Телеграм.
Как проверить является ли строка числом int/float
@oleksandrigo я должен данную функцию добавить в предыдущую или if is_number (message.text): автоматически ссылается на функцию def is_number для проверки? потому что все равно не пропускает число с точкой
30 сен 2022 в 13:22
Убрал из функции int(stroka) и стал принимать как обычные так и вещественные числа
30 сен 2022 в 13:42
Это я перестарался
30 сен 2022 в 15:04
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
def is_number(stroka: str): try: float(stroka) return True except ValueError: return False def check_flight_hours (message: types.Message): # если не число то повторный ввод if is_number(message.text): night_hours = bot.send_message(message.chat.id, "Введите количество ночных часов: " ) bot.register_next_step_handler(night_hours, check_night_hours) # проверяем ввел ли число юзер else: flight_hours = bot.send_message(message.chat.id, "Введите количество летных часов: ") bot.register_next_step_handler(flight_hours, check_flight_hours)
Отслеживать
ответ дан 30 сен 2022 в 12:36
oleksandrigo oleksandrigo
5,318 2 2 золотых знака 10 10 серебряных знаков 25 25 бронзовых знаков
import re print("да" if re.fullmatch(pattern=r"\d+[.]\d+", string="3.14") else "нет")
Отслеживать
ответ дан 17 авг в 14:31
AlexSpeaker AlexSpeaker
1 1 1 бронзовый знак
Строки -1 , .2 , 1e5 , inf и nan являются float-числами, но вашу проверку не пройдут
17 авг в 14:40
Да, совершенно верно
17 авг в 14:52
Впринципе, можно усложнить регулярку и будет счастье, но с try except, наверное, будет проще
17 авг в 14:58
- python
- telebot
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
