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