Как сделать проверку на int, если число отправляется в виде str?
Есть тг бот и список, который создается из сообщений пользователя. В данном случае из цифр. Проблема в том, что любое сообщение получается в виде строки. То есть сообщение 1000 будет равно str(1000) или '1000'. Необходимо сделать проверку, является ли сообщение числом. И если это число, то добавить в список. Я сделал так:
if int(message.text) % 1 == 0:
messages.append(message.text)
Но в таком случае выходит ошибка, если я пробую сделать другое условие, например:
elif message.text == 're':
messages.append(message.text)
Может есть другой способ проверить является ли сообщение числом? Без преобразования в int прямо в условии
Ответы (1 шт):
У строки есть встроенные методы для таких проверок:
message.text.isdigit()
Результат:
message.text = '1234'
print(message.text.isdigit())
# True
message.text = '1234qwe'
print(message.text.isdigit())
# False
Однако надо учесть, что числа с плавающей точкой эту проверку проходить не будут:
message.text = '12.56'
print(message.text.isdigit())
# False
Поэтому стоит поискать другой метод проверки или написать что-то вроде этого:
def is_number(str):
try:
float(str)
return True
except ValueError:
return False
message.text = '12.56'
print(is_number(message.text))
# True