Pour échanger les contenus des variables x
et y
, on utilise
une variable de stockage z
.
# Programme 4
x = 502
y = 621
z = x
x = y
y = z
Le tableau d'évolution des variables ci-dessous permet de comprendre l'utilité de
la variable de stockage.
Instruction |
Valeur de x |
Valeur de y |
Valeur de z |
x = 502 |
502 |
|
|
y = 621 |
502 |
621 |
|
z = x |
502 |
621 |
502 |
x = y |
621 |
621 |
502 |
y = z |
621 |
502 |
502 |
En Python
, on peut effectuer une sorte d'affectation simultanée
en utilisant la propriété de tuple unpacking, et c'est la manière la plus
courante d'échanger les contenus de deux ou plusieurs variables. D'ailleurs
le tuple unpacking peut être utilisé pour initialiser en une instruction
plusieurs variables.
In [15]: x = 502
In [16]: y = 621
In [17]: x, y = y, x
In [18]: print(x, y)
621 502
In [19]: a, b, c = 501, 502, 503
In [20]: print(a, b, c)
501 502 503
In [21]: a, b, c = c, a, b
In [22]: print(a, b, c)
503 501 502
Le programme ci-dessous échange les contenus initiaux des variables
x
et y
sans utiliser de variable de stockage.
##Programme 5
x = 502
y = 621
x = (x + y)/2
y = 2 * x - y
x = 2 * x - y
On peut le démontrer avec un tableau d'évolution des variables, en désignant
les valeurs initiales de x
et y
par des paramètres $a$ et $b$.
Instruction |
Valeur de x |
Valeur de y |
x = 502 |
$a$ |
|
y = 621 |
$a$ |
$b$ |
x = (x + y)/2 |
$\frac{a+b}{2}$ |
$b$ |
y = 2 * x - y |
$\frac{a+b}{2}$ |
$a$ |
x = 2 * x - y |
$b$ |
$a$ |