11

Проверка, является ли переменная целым числом

16

Проблема: Как проверить, является ли переменная целым числом?

Я столкнулся с проблемой в Python, когда мне нужно проверить, является ли переменная целым числом. Я нашел вопрос, на который уже есть ответы по этой теме, но, к сожалению, он был закрыт 4 года назад. При этом сообщалось, что причины закрытия не были устранены. Сообщество также обсуждало возможность повторного открытия вопроса 2 года назад, но решение оставили прежним.

Я хотел бы получить рекомендации по правильному и каноничному способу проверки типа переменной на целое число. Не могли бы вы помочь мне разобраться в этом вопросе? Я ищу советы и примеры кода, которые могут быть полезны.

5 ответ(ов)

1

Все предложенные ответы, судя по всему, упускают тот факт, что число с плавающей точкой (в Python плавающие числа — это на самом деле числа типа double) может также быть целым числом (если после десятичной точки ничего нет). Я использую встроенный метод is_integer() для проверки этого.

Вот пример (для выполнения чего-то каждые x раз в цикле for):

for index in range(y): 
    # что-то делаем
    if (index / x).is_integer():
        # делаем что-то особое

Редактирование:

Вы всегда можете конвертировать в float перед вызовом этого метода. Вот три возможности:

>>> float(5).is_integer()
True
>>> float(5.1).is_integer()
False
>>> float(5.0).is_integer()
True

В противном случае вы можете сначала проверить, является ли значение целым числом, как сказал Агостино:

def is_int(val):
    if type(val) == int:
        return True
    else:
        if val.is_integer():
            return True
        else:
            return False
0

Почему бы не попробовать что-то вроде:

if x % 1 == 0:

Этот код проверяет, является ли переменная x целым числом. Если результат деления x на 1 равен нулю, значит, x делится на 1 без остатка, и, следовательно, это целое число. Это простой и эффективный способ проверки типа числа.

0

Вместо того чтобы усложнять, почему бы не сделать просто так:

if type(var) is int:

Это прямой и понятный способ проверить тип переменной. Однако, стоит отметить, что рекомендуется использовать isinstance() по следующим причинам:

  1. Поддержка наследования: isinstance() также вернёт True, если var является экземпляром подкласса int, тогда как type(var) is int не сработает в таких случаях.

  2. Читаемость: Код с isinstance() часто воспринимается как более читаемый:

    if isinstance(var, int):
    

Так что, хотя ваш подход работает, использование isinstance() делает код более гибким и правильным с точки зрения объектно-ориентированной практики.

0

Вы также можете использовать метод str.isdigit. Попробуйте ознакомиться с документацией, вызвав help(str.isdigit).

Вот пример функции, проверяющей, является ли строка цифровой:

def is_digit(s):
    return s.isdigit()

Этот метод возвращает True, если все символы в строке являются цифрами, и False в противном случае.

0

Простое решение, которое я использую во всех своих проектах, выглядит следующим образом. Оно проверяет, состоит ли переменная только из чисел:

test = input("Введите текст: ")
if test.isdigit():
    print("Это число.")
else:
    print("Это не число.")

В этом примере функция isdigit() проверяет, состоит ли строка из цифр. Если да, выводится сообщение о том, что это число; в противном случае мы информируем, что это не число.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь