Подтвердить что ты не робот

Проверьте, является ли объект числом или логическим

Создайте логическое выражение, эквивалентное следующему выражению:

x - это список из трех или пяти элементов, вторым элементом которого является строка 'Hip' и первая из которых не является числом или булевым.

Что у меня:

x = ['Head', 'Hip', 10]
print x[1] is 'Hip'

Мой вопрос: как вы проверяете, является ли это логическим или числовым?

4b9b3361

Ответ 1

Чтобы ответить на конкретный вопрос:

isinstance(x[0], (int, float))

Это проверяет, является ли x[0] экземпляром любого из типов в кортеже (int, float).

Здесь вы можете добавить bool, но это не обязательно, потому что bool сам является подклассом int.

Ссылка на Doc:


Чтобы прокомментировать ваш текущий код, вы не должны полагаться на интернирование коротких строк. Вы должны сравнить строки с оператором ==:

x[1] == 'Hip'

Ответ 2

Самый простой, я бы сказал:

type(x) == type(True)

Ответ 3

В python3 это будет: type(x)==bool см. Пример.

Ответ 4

import types
type(x) == types.BooleanType

Ответ 5

Вы должны сравнить тип x с классом bool:

type(x) == bool

или же:

type(x) == type(True)

Вот больше о методе типа

Из документов модели данных:

Booleans (bool)

Они представляют ценности истины Ложь и Истина. Два объекта, представляющих значения False и True, являются единственными логическими объектами. Логический тип является подтипом целочисленного типа, а логические значения ведут себя как значения 0 и 1, соответственно, почти во всех контекстах, за исключением того, что при преобразовании в строку возвращаются строки "False" или "True" соответственно.

Ответ 6

Я следую недавнему ответу, который говорит использовать type и он кажется неправильным в соответствии с валидацией pylint:

Я получил сообщение:

C0123: Использование type() вместо isinstance() для проверки типов. (Unidiomatic-typecheck)

Даже если это старый ответ, правильный ответ - @Lev Levitsky:

isinstance(x[0], (int, float))