Problema elementare, ma subdolo… vedi la discussione
1 2 3 4 5 6 |
a=5 b=100 print(a,b) # 5 100 a=b # a ← b=100 print(a,b) # 100 100 |
1 2 3 4 5 |
... a=b # a ← b=100 b=a # b ← a=100 print(a,b) # 100 100 |
1 2 3 4 5 |
... b=a # b ← a=5 a=b # a ← b=5 print(a,b) # 5 5 |
Soluzione 1
1 2 3 4 5 6 |
... temp=a # temp ← a=5 a=b # a ← b=100 b=temp # b ← temp=5 print(a,b) # 100 5 |
Soluzione 2
1 2 3 4 5 6 |
... 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
1 2 3 4 |
... a,b=b,a # a ← b=100, b ← a=5 print(a,b) # 100 5 |
Soluzione 4
Se a e b sono di tipo intero esiste una soluzione molto originale
1 2 3 4 5 6 |
... 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 |