Python

Entrées/Sorties
Exercices pour progresser

Le programme de cet exercice demande un peu de bon sens et de «fair-play».

L'utilisateur entre deux valeurs affectées aux variables a et b. Dans l'exemple d'affichage ci-dessous, l'utilisateur a entré 7 pour la valeur de a et 2 pour la valeur de b.

Entrer la valeur de a : 7
Entrer la valeur de b : 2
A present, a = 2 et b = 7

Écrire un programme qui permet l'échange de ces valeurs, c'est-à-dire :

  • Si on ajoute l'instruction print(a) alors le programme affichera 2 ;
  • Et si on ajoute l'instruction print(b) alors le programme affichera 7.

					
					
  • Une piste ?
  • Un schéma ?
  • Une analyse ?
  • Une solution ?
  • Une astuce ?
Avec un verre de grenadine dans la main droite et un verre de menthe à l'eau dans la main gauche, comment faire pour échanger les liquides de verre sans que les liquides ne se mélangent ?
Difficile d'échanger deux liquides sans un intermédiaire...
On introduit une 3ème variable notée c. Alors
  • on place la valeur de a dans c (a et c ont pour valeur 2);
  • on place la valeur de b dans a (a et b ont pour valeur 7);
  • on place la valeur de c dans b (b et c ont pour valeur 2);

a = input('Entrer la valeur de a : ')
b = input('Entrer la valeur de b : ')
c = a                                    # La grenadine va dans le 3eme verre
a = b                                    # La menthe va dans le verre de la grenadine
b = c                                    # On vide le 3eme verre dans l'ancien verre de la menthe

print('A present, a = {0} et b = {1}'.format(a, b))
	

En fait, il y a plus simple car Python autorise l'affectation parallèle :


a = input('Entrer la valeur de a : ')
b = input('Entrer la valeur de b : ')
a, b = b, a                            # a et b echangent de valeur en "parallele"

print('A present, a = {0} et b = {1}'.format(a, b))
	

Modifier le programme précédent pour échanger cette fois-ci les valeurs de trois variables (celle de a va dans b ; celle de b va dans c et celle de c va dans a).

Entrer la valeur de a : 7
Entrer la valeur de b : 2
Entrer la valeur de c : 4
A present, a = 4 et b = 7 et c = 2
  • Une piste ?
  • Une autre piste ?
  • Une solution ?
  • Une astuce ?
Difficile d'échanger des liquides sans intermédiaire...
On introduit une variable supplémentaire et on reprend le raisonnement précédent.
On peut aussi essayer l'affectation en parallèle !

a = input('Entrer la valeur de a : ')
b = input('Entrer la valeur de b : ')
c = input('Entrer la valeur de c : ')
d = a
a = c
c = b
b = d

print('A present, a = {0}, b = {1} et c = {2}'.format(a, b, c))
	

L'affectation parallèle marche encore :


a = input('Entrer la valeur de a : ')
b = input('Entrer la valeur de b : ')
c = input('Entrer la valeur de c : ')
a, b, c = b, c, a

print('A present, a = {0}, b = {1} et c = {2}'.format(a, b, c))