2013-02-22 19 views
23

design un'espressione logica equivalente alla seguente dichiarazione:Controllare se l'oggetto è un numero o booleano

x è una lista di tre o cinque elementi, il secondo elemento di cui è la stringa 'Hip' e la prima di cui non è un numero o Booleano.

Quello che ho:

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

La mia domanda: come si fa a controllare per se o non si tratta di un valore booleano o un numero?

risposta

30

per rispondere alla domanda specifica:

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

Questo controlla se x[0] è un'istanza di uno qualsiasi dei tipi nella tupla (int, float).

È possibile aggiungere bool anche lì, ma non è necessario, perché bool è di per sé una sottoclasse di int.

riferimento doc:


di commentare il codice corrente, non si deve fare affidamento su interning of short strings. Si suppone di confrontare le stringhe con l'operatore ==:

x[1] == 'Hip' 
5
import types 
type(x) == types.BooleanType 
+0

'types.BooleanType' è stato rimosso da Python 3. al suo posto viene usato' bool'. Fonte: http://www.diveintopython3.net/porting-code-to-python-3-with-2to3.html#types – KSR

16

più semplice direi:

type(x) == type(True) 
+0

Un po 'hacky ma nessuna importazione, quindi +1 –

+9

Forse direttamente 'type (x) is bool'? – lerner

3

In python3 questo sarebbe: type(x)==bool vedere example.

+0

Il mio funziona in entrambi. Anche la logica è per lo più linguistica. – CurlyMo

Problemi correlati