PDA

Visualizza la versione completa : [Python] L'ordine di Not And Or


Mark Lenders
31-03-2015, 01:37
Mi sto trovando di fronte ad un esercizio su codecademy sull'ordine con il quale il linguaggio considera i comandi not, and, or, ma che io non ho proprio capito...

Dunque il capitolo di questo esercizio mi dice che Python non prende in considerazione i comandi da sinistra verso destra, ma che la precedenza ce l'ha il not, poi and ed infine or.

Ora come faccio a capire se "false or not true and true" è vero o falso?
Il mio ragionamento è: not true è falso, and true e vero e false or....è falso?? Non ne ho la più pallida idea, e come li metto insieme tutti questi?

MItaly
31-03-2015, 02:09
Basta aggiungere parentesi attorno alle sottoespressioni secondo le regole di precedenza del linguaggio, esattamente come si fa in matematica (dove, ad esempio, l'ordine è potenze -> prodotti/divisioni -> somme/differenze).
Per cui:
false or not true and true
Prima raggruppo le espressioni che coinvolgono il not:
False or (not True) and True
Poi quelle con and
False or ((not True) and True)
Infine quelle con l'or
(False or ((not True) and True))
A questo punto la soluzione è ovvia: parto a risolvere dalle parentesi più interne
(False or (False and True))
(False or False)
False

Mark Lenders
31-03-2015, 13:51
Ora si che ho una spiegazione chiara e finalmente ho capito la questione.
Grazie della spiegazione, sei stato molto gentile.

MItaly
31-03-2015, 22:27
:ciauz:

(ma ricorda che, oltre alla priorità, gli operatori hanno anche un'associatività... :spy: in Python la cosa è visibile per l'operatore di elevamento a potenza; leggi qui: http://www.programiz.com/python-programming/precedence-associativity)

Loading