2014-12-18 12 views
6

Spiegare di seguito, penso che avrebbe dovuto stampare Vero o Falso poiché si tratta di espressioni booleane. E perché è la stampa di 2 1 e poi 1 2Quirky output python

print 1 and 2 
print 2 and 1 
print 1 or 2 
print 2 or 1 

uscita:

2 
1 
1 
2 
+3

Questo è chiaramente spiegato in [la documentazione di Python] (https://docs.python.org/release/2.5.2/lib/boolean.html). – kindall

risposta

5

Perché pensi che il risultato deve essere di tipo booleano?

in pitone wiki:

L'espressione x and y valuta prima x; se x è falso, viene restituito il valore ; in caso contrario, y viene valutato e viene restituito il valore risultante.

L'espressione xo y prima valuta x; se x è vero, viene restituito il valore ; in caso contrario, y viene valutato e viene restituito il valore risultante.

Nota che né eo limitare il valore e il tipo tornano a False e True, ma piuttosto tornare l'ultimo argomento valutato. Ciò è talvolta utile, ad esempio, se s è una stringa che deve essere sostituita da un valore predefinito se è vuota, l'espressione s or 'foo' restituisce il valore desiderato. Poiché non è necessario inventare un valore in ogni caso, non si preoccupa di restituire un valore dello stesso tipo del suo argomento, quindi ad esempio, not 'foo' restituisce False, non ''.

Problemi correlati