ti-enxame.com

Verifique se o objeto é um número ou booleano

Crie uma expressão lógica equivalente à seguinte declaração:

x é uma lista de três ou cinco elementos, o segundo elemento é a string 'Hip' e o primeiro deles não é um número ou booleano.

O que eu tenho: 

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

Minha pergunta: Como você verifica se é um boleano ou um número?

28
Joakim

Para responder a pergunta específica:

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

Isso verifica se x[0] é uma instância de qualquer um dos tipos no Tuple (int, float).

Você pode adicionar bool também, mas não é necessário, porque bool é uma subclasse de int.

Referência doc: 


Para comentar sobre seu código atual, você não deve confiar em interning de strings curtas . Você deve comparar strings com o operador ==:

x[1] == 'Hip'
36
Lev Levitsky

Mais fácil eu diria:

type(x) == type(True)
22
CurlyMo

Em python3 isso seria: type(x)==bool veja example .

6
Thijs Cobben
import types
type(x) == types.BooleanType
5
Peyman Karimi

Você deve comparar o tipo de x à classe bool:

type(x) == bool

ou:

type(x) == type(True)

Aqui está mais no método type

De Docs do modelo de dados :

Booleanos (bool)

Estes representam os valores verdadeiros Falso e Verdadeiro. Os dois objetos que representam os valores False e True são os únicos objetos booleanos. O tipo booleano é um subtipo do tipo inteiro, e os valores booleanos se comportam como os valores 0 e 1, respectivamente, em quase todos os contextos, sendo que quando convertidos em string, as strings "False" ou "True" são retornadas , respectivamente.

1
Justin Golden