On Thu, Feb 04, 2010 at 01:15:37PM +0100, Daniele Varrazzo wrote: > On Thu, 4 Feb 2010 10:26:40 +0100, Alessandro Dentella <san...@e-den.it> > wrote: > > > Mi viene qui di da chiedermi: ma che bisogno c'è che un booleano erediti > > da > > un intero? piace a tutti che "0 == False" sia vero? > > A me piace... e mi piace ancora di più che 1 == True! In questo modo un > modo rapido per sapere quanti True hai in un insieme è sommare i valori > logici tra loro. O fare giochini tipo: > > In [1]: def leggi_lati_triangolo(): > ...: return map(int, raw_input().split()) > ...: > > In [2]: a, b, c = leggi_lati_triangolo() > 3 4 4 > > In [3]: {0: 'scaleno', 1: 'isoscele', 3: 'equilatero'}[(a == b) + (b == c) > + (a == c)] > Out[3]: 'isoscele' > > In calcolo numerico si usa spesso moltiplicare una matrice numerica per > una matrice di booleani: la semplice moltiplicazione restituisce una > matrice che contiene solo i valori numerici corrispondenti ai "vero" dei > booleani. Perché dovrebbe essere più facile fare queste operazioni in C che > in Python? ;) Questo è avvincente come sostegno all'idea che il booleano si comporti comex un intero. Ne deriva necessariamente che 0 == False? Ovvero: il fatto che *si comporti come un numero* nell operazioni richiede per necessità che == dica che sono uguali?
Credo che la prima parte delle parole di guido indichino di no: In an ideal world, bool might be better implemented as a separate integer type that knows how to perform mixed-mode arithmetic sandro *:-) -- Sandro Dentella *:-) http://sqlkit.argolinux.org SQLkit home page - PyGTK/python/sqlalchemy _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python