Как проверить является ли строка числом python
Перейти к содержимому

Как проверить является ли строка числом python

  • автор:

Python: проверка, является ли переменная числом

В этой статье мы рассмотрим несколько примеров того, как проверить, является ли переменная числом в Python.

Python имеет динамическую типизацию. Нет необходимости объявлять тип переменной во время ее создания — интерпретатор определяет тип во время выполнения:

variable = 4 another_variable = 'hello' 

Кроме того, переменную можно переназначить новому типу в любой момент:

# Присвойте числовое значение variable = 4 # Переназначить строковое значение variable = 'four' 

Этот подход, имея преимущества, также знакомит нас с несколькими проблемами. А именно, когда мы получаем переменную, мы обычно не знаем, какого она типа. Если мы ожидаем число, но получаем неопределенный variable , мы захотим проверить, является ли он числом, прежде чем выполнять какие-то действия.

Использование функции type()

В Python функция type() возвращает тип аргумента:

myNumber = 1 print(type(myNumber)) myFloat = 1.0 print(type(myFloat)) myString = 's' print(type(myString)) 

Таким образом, способ проверки типа:

myVariable = input('Enter a number') if type(myVariable) == int or type(myVariable) == float: # Do something else: print('The variable is not a number') 

Здесь мы проверяем, является ли тип переменной, введенной пользователем, int или float , продолжая выполнение программы, если это так. В противном случае мы уведомляем пользователя, что он ввел переменную, отличную от Number. Помните, что если вы сравниваете несколько типов, например int или float , вам придется использовать эту type() функцию оба раза.

Если бы мы просто сказали if type(var) == int or float , что вроде бы нормально, возникла бы проблема:

myVariable = 'A string' if type(myVariable) == int or float: print('The variable a number') else: print('The variable is not a number') 

Это, независимо от ввода, возвращает:

The variable is a number 

Это потому, что Python проверяет значения истинности утверждений. Переменные в Python могут быть оценены как True за исключением False , None , 0 и пустых [] , <> , set() , () , » или «» .

Следовательно, когда мы пишем or float в нашем условии, это эквивалентно записи or True , которая всегда будет возвращать True .

numbers.Number

Хороший способ проверить, является ли переменная числом — это модуль numbers . Вы можете проверить, является ли переменная экземпляром класса Number , с помощью функции isinstance() :

import numbers variable = 5 print(isinstance(5, numbers.Number))
True

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

Использование блока try-except

Другой способ проверить, является ли переменная числом — использовать блок try-except. В блоке try мы преобразуем данную переменную в int или float . Успешное выполнение блока try означает, что переменная является числом, то есть либо int , либо float :

myVariable = 1 try: tmp = int(myVariable) print('The variable a number') except: print('The variable is not a number')

Это работает как для int, так и для float, потому что вы можете привести int к float и float к int.

Если вы специально хотите только проверить, является ли переменная одной из них, вам следует использовать функцию type() .

String.isnumeric()

В Python isnumeric() — это встроенный метод, используемый для обработки строк. Методы issnumeric() возвращают «True», если все символы в строке являются числовыми символами. В противном случае он возвращает «False».
Эта функция используется для проверки, содержит ли аргумент все числовые символы, такие как: целые числа, дроби, нижний индекс, верхний индекс, римские цифры и т.д. (Все написано в юникоде)

string = '123ayu456' print(string.isnumeric()) string = '123456' print( string.isnumeric()) 
False True 
String.isdigit()

Метод isdigit() возвращает истину, если все символы являются цифрами, в противном случае значение False.

Показатели, такие как ², также считаются цифрами.

print("\u0030".isdigit()) # unicode for 0 print("\u00B2".isdigit()) # unicode for ² 
True True

Как проверить является ли строка числом 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 

Как проверить является ли строка числом 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,328 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.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Проверьте, является ли данная строка числовой в Python

В этом посте мы обсудим, как проверить, является ли строка числовой в Python.

1. Использование float() функция

Идея состоит в том, чтобы преобразовать строку в число с плавающей запятой и вернуть false, если преобразование невозможно. Это можно легко сделать с помощью float(x) функция, которая преобразует строку x в число с плавающей запятой и повышает ValueError когда он не может преобразовать x в действительный поплавок.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *