Domanda

In che modo Python valuta l'espressione 1 +++ 2 ?

Quanti mai + ho messo in mezzo, sta stampando 3 come risposta. Qualcuno può spiegare questo comportamento

E per 1--2 sta stampando 3 e per 1 --- 2 sta stampando -1

È stato utile?

Soluzione

La tua espressione è uguale a:

1+(+(+2))

Qualsiasi espressione numerica può essere preceduta da - per renderlo negativo o + per non fare nulla (l'opzione è presente per la simmetria). Con segni negativi:

1-(-(2)) = 1-(-2)
         = 1+2
         = 3

e

1-(-(-2)) = 1-(2)
          = -1

Vedo che hai chiarito la tua domanda per dire che provieni da uno sfondo C. In Python non ci sono operatori di incremento come ++ e - in C, che probabilmente era la fonte della tua confusione. Per incrementare o decrementare una variabile i o j in Python usa questo stile:

i += 1
j -= 1

Altri suggerimenti

I + in più non sono incrementatori (come ++ a o a ++ in c ++). Stanno solo dimostrando che il numero è positivo.

Non esiste un tale operatore ++. C'è un operatore unario + e un operatore unario - però. L'operatore unario + non ha alcun effetto sul suo argomento. L'operatore unario annulla il proprio operatore o lo elabora di -1.

+1

- > 1

++1

- > 1

È uguale a + (+ (1))

   1+++2

- > 3 Perché è uguale a 1 + (+ (+ (2))

Allo stesso modo puoi fare --1 per significare - (-1) che è +1.

  --1

- > 1

Per completezza non esiste * unario opeartor. Quindi * 1 è un errore. Ma c'è un ** operatore che è il potere di, prende 2 argomenti.

 2**3

- > 8

1 + (+ (+ 2)) = 3

1 - (-2) = 3

1 - (- (- 2)) = -1

Prova Unary Plus e Unary meno meno :

  

L'operatore unario - (meno) produce la negazione del suo argomento numerico.

     

L'operatore unario + (più) restituisce invariato l'argomento numerico.

>>> +2
2
>>> ++2
2
>>> +++2
2
>>> -2
-2
>>> --2
2
>>> ---2
-2
>>> 1+(++2)
3

Credo che sia analizzato come, il primo + come operazione binaria (aggiungi), e il resto come operazioni unarie (rendere positivo).

 1 + (+(+2))

Pensalo come 1 + (+1 * (+ 1 * 2))). Il primo + è operatore e i seguenti segni più sono segno del secondo operando (= 2).

Proprio come 1 --- 2 è uguale a 1 - - (- (2)) o 1- (-1 * (- 1 * (2))

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top