2013-02-22 24 views
23

Entwurf eines logischer Ausdruck äquivalent zu folgenden Aussage:überprüfen Sie, ob Objekt eine Zahl oder boolean ist

x ist eine Liste mit drei oder fünf Elementen, das zweite Element davon ist die Zeichenfolge 'Hip' und die erste davon ist keine Zahl oder Boolean.

Was ich habe:

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

Meine Frage: Wie überprüfen Sie, ob oder nicht, ist es eine Boolesche oder eine Zahl?

Antwort

30

die spezifische Frage zu beantworten:

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

Diese prüft, ob x[0] eine Instanz einer der Typen in dem Tupel (int, float) ist.

Sie können bool dort auch hinzufügen, aber es ist nicht notwendig, weil bool selbst eine Unterklasse von int ist.

Doc Referenz:


auf Ihrem aktuellen Code zu kommentieren, sollten Sie nicht auf interning of short strings verlassen. Sie sollen Strings mit dem == Operator vergleichen:

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

'types.BooleanType' wurde aus Python 3 entfernt. Stattdessen wird' bool' verwendet. Quelle: http://www.diveintopython3.net/porting-code-to-python-3-with-2to3.html#types – KSR

16

Easiest würde ich sagen:

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

Ein wenig hacky aber keine Importe, so +1 –

+9

Vielleicht direkt 'Typ (x) ist Bool? – lerner

3

In python3 dies wäre: type(x)==bool sehen example.

+0

Mine funktioniert in beiden. Die Logik ist meistens auch sprachunabhängig. – CurlyMo

Verwandte Themen