LE POST IT À RALLONGE

Une petite note par lerautal

1. QUELLE SONT LEURS POSITIONS ?

Ils sont revenus dans le jardin pour voir comment poussent le Sempervivum et la Sauge.
Le temps est trop sec pour la Sauge, alors que l'autre plante, qui est une succulente s'accomode bien de l'été.
Après un arrosage bien venu, Françoise interpelle Thomas.

" Tu n'as pas oublié que tu devais nous montrer comment localiser les plantes "virtuellement" avec un programme informatique ?
- C'est facile. Sûrement beaucoup plus que de réaliser le drone."


Inès en profite pour donner quelques informations sur l'avancement de son travail.

"J'ai trouvé un jouet un peu amélioré, du genre de celui-ci :

drone jouet

Il est possible d'y placer nos propres cartes électroniques : carte-mère minimaliste, émetteur/récepteur radio (pour les puces et les balises), GPS.
Moins de 100 euros. Mais il va falloir que nous ajoutions l'intelligence à cette mécanique.
- Intelligence qui paiera nos salaires...
- Exactement."


De retour au local, Thomas explique comment localiser chaque plante (ou le chasseur Schmoll...)

"Le Python de base est capable d'effectuer des opérations sur plusieurs types de données...
- ????
- Voilà :
Françoise réagit :

"Liste ? comme liste de commissions ? -
- Presque. Avant d'aller faire tes achats tu n'utiliserais pas un Post it ?
- Oui."


Thomas va chercher un paquet de ces petits papiers aide-mémoire et en retire 18 qu'il assemble à la queue leuleu, réalisant une sorte de bande continue.
D'un côté de la bande et sur chaque Post it il écrit un numéro : 0 sur le premier, 1 sur le suivant, ...
Puis il retourne la bande et demande :

"A quelle position est placée la Sauge ?
- En 9,
- On lui donnera le matricule 520. Et le Sempervivum ?
- En 15 (comme le Chasseur qui marche au pas).
- On lui donnera le matricule 640."


Joignant le geste à la parole, il incrit 520 à l'envers du Post it qui porte le numéro 9 et 640 au dos de celui qui porte le numéro 15.

Ines a compris elle lui demande :

"Quel est le numéro du Post it sur lequel tu as écrit 520 ?
- Facile... je cherche 520 puis je regarde à l'envers de la bande : 9..."
- Oui, mais cela, c'est de l'informatique "papier", tu triches.
- Avant de programmer il est toujours bon de simuler par des moyens matériels et sensibles."


2. LA SOLUTION INFORMATIQUE

"La ligne de culture peut être représentée par une liste au sens de Python.
Elle comporte 18 positions. Certaines sont inoccupées pour le moment et, par commodité, on va considérer qu'elles contiennent zéro.
En position 9 de la liste on va entrer 520.
En position 15 on va entrer 640.
Puis on interrogera la liste pour qu'elle donne la position de chacun des deux nombres."


Le programme :
(En bleu les explications, en rouge le code Python)

Création d'une liste de 18 éléments égaux à zéro.
>>> ligne_de_culture = 18*[0]

Affichage du contenu de la liste. Remarquer les crochets et les virgules.

>>> ligne_de_culture
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


On vérifie si avec print c'est pareil. Eh oui, au moins ici.
>>> print ligne_de_culture
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


On remplace le zéro de la position 9 par le numéro de la Sauge.
>>> ligne_de_culture[9] = 520

Pareil pour le Sempervivum.
>>> ligne_de_culture[15] = 640

On affiche le contenu de la liste.
>>> ligne_de_culture
[0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0, 0, 640, 0, 0]


Et maintenant on recherche la position occupée par 520 dans la liste.
>>> ligne_de_culture.index(520)
9


De même pour 640.
>>> ligne_de_culture.index(640)
15

>>>

3. REMARQUES

4. COMPLÉMENTS

Limites de la fonction index.

Dans le programme suivant on a entré deux fois la valeur 520 dans la liste :

ligne_de_culture = 18*[0]
ligne
_de_culture[9] = 520
ligne
_de_culture[12] = 520
print ligne
_de_culture.index(520)

Comme résultat on n'obtient que le premier : 9

Afficher le contenu d'une position.

Si l'on veut récupérer le contenu d'une position (d'un "Post it"), on indique celle-ci entre crochets :
ligne_de_culture[15]
donnera 640.

On pourra également récupérer ce contenu dans une variable :
valeur = ligne_de_culture[15]
Et même imprimer cette valeur avec une information textuelle :
print "En position 15, la valeur est : ",valeur
Ce qui permet de comprendre que print offre l'avantage d'être plus souple.

Echanger le contenu de deux positions.

Ici, l'on a besoin d'une variable pour conserver provisoirement l'une des valeurs.
Je l'ai appelée en_attente
# le programme avant modification
ligne_de_culture=18*[0]
ligne_de_culture[9] =520
ligne_de_culture[15] =640
print ligne_de_culture
# l'échange
en_attente = ligne_de_culture[9]
ligne_de_culture[9] = ligne_de_culture[15]
ligne_de_culture[15] = en_attente
print ligne_de_culture