Проверить является ли строка числом в Python
К сожалению функция isdigit не работает для чисел с плавающей точкой и для отрицательных чисел. Так что для такой проверки можно использовать следующую функцию, которая представляет собой комбинацию из проверки isdigit и обычного конвертирования во float:
def is_digit(string):
if string.isdigit():
return True
else:
try: float(string) return True except ValueError: return False
>>>print(is_digit('neer'))
False
>>>print(is_digit('neer306'))
False
>>>print(is_digit('306'))
True
>>>print(is_digit('0.05'))
True
>>>print(is_digit('0.05abc'))
False
Как проверить строку на предмет цифр?

Есть вот такой код, если ввести любой символ кроме цифр или = то появляется ошибка преобразования.
Как правильно сделать проверку, на запрещенные символы это все буквы и знаки? Нужно копать в сторону регулярок или есть решения по лучше?
Добавлено через 24 минуты
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
import re chet = 0 non = 0 p = re.compile('[0-9]') while True: i = input('Введите число, для выхода введите = ') if i == '=': break; if p.match(i) == None: print('Введент недопустимый символ') continue; if int(i) % 2 == 0: print('Число четное') chet += 1 else: print('Число нечетное') non += 1 print("Вы ввели четных числе " + str(chet)+ ' Не четных '+str(non))
Пока сделал так, есть более «красивое» решение?
Проверка на число
Достаточно часто требуется узнать: записано ли в переменной число. Такая ситуация может возникнуть при обработке введенных пользователем данных. При чтении данных из файла или при обработке полученных данных от другого устройства.
В Python проверка строки на число можно осуществить двумя способами:
- Проверить все символы строки что в них записаны цифры. Обычно используется для этого функция isdigit.
- Попытаться перевести строку в число. В Python это осуществляется с помощью методов float и int. В этом случае обрабатывается возможное исключение.
Рассмотрим как применяются эти способы на практике.
isdigit, isnumeric и isdecimal
У строк есть метод isdigit, который позволяет проверить, являются ли символы, являются ли символы, из которых состоит строка цифрами. С помощью этого метода мы можем проверить, записано ли в строку целое положительное число или нет. Положительное — это потому, что знак минус не будет считаться цифрой и метод вернет значение False.
a = '0251' print(a.isdigit()) True
Если в строка будет пустой, то функция возвратит False.
a = '' print(a.isdigit()) False
Методы строки isnumeric и isdecimal работают аналогично. Различия в этих методах только в обработке специальных символов Unicode. А так как пользователь будет вводить цифры от 0 до 9, а различные символы, например, дробей или римских цифр нас не интересуют, то следует использовать функцию isdigit.
Проверка с помощью исключения
Что же делать, если требуется проверить строку на отрицательное число. В Python с помощью isdigit не удастся определить отрицательное число или число с плавающей точкой. В этом случае есть универсальный и самый надежный способ. Надо привести строку к вещественному числу. Если возникнет исключение, то значит в строке записано не число.
Приведем функцию и пример ее использования:
def is_number(str): try: float(str) return True except ValueError: return False a = '123.456' print(is_number(a)) True
Для целых чисел
Аналогично можно сделать и проверку на целое число:
def is_int(str): try: int(str) return True except ValueError: return False a = '123.456' print(is_int(a)) False
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())
Как видите — все просто Как всегда — в случае возникновения вопросов пишите на почту, или в Телеграм.