Scambiare 2 variabili

Problema elementare, ma subdolo… vedi la discussione

1

a = 5 
b = 100 
print(a, b)  # 5 100 

a = b        # a ← b = 100
print(a, b)  # 100 100 ???

2

...
a = b        # a ← b = 100
b = a        # b ← a = 100
print(a, b)  # 100 100 ???

3

...
b = a        # b ← a = 5
a = b        # a ← b = 5
print(a, b)  # 5 5 ???

Soluzione 1

In senso antiorario

...
temp = a     # temp ← a    = 5 
a    = b     # a    ← b    = 100 
b    = temp  # b    ← temp = 5 
print(a, b)  # 100 5

Soluzione 2

In senso orario

...
temp = b     # temp ← b    = 100 
b    = a     # b    ← a    = 5 
a    = temp  # a    ← temp = 100 
print(a, b)  # 100 5

Soluzione 3

Python permette di risolvere il problema con una doppia assegnazione

...
a, b = b, a  # (a, b) ← (b, a) = (100, 5) 
print(a, b)  # 100 5

Soluzione 4

Se a e b sono di tipo intero esiste una soluzione molto originale

...
a = a+b      # a ← 5+100   = 105
b = a-b      # b ← 105-5   = 100
a = a-b      # a ← 105-100 = 5  
print(a, b)  # 100 5