Table des matières

Différentes utilisation de Python

IMC = Indice de Masse Corporelle. C'est une grandeur à usage des médecins et des diététiciens et qui permet d'évaluer, grossièrement, la corpulence d'une personne. En fonction de la valeur de l'IMC on pourra se faire une première idée de la situation d'une personne. Son poids est-il normal pour sa taille ? Le calcul est : $$IMC = \frac{\text{poids en kg}}{(\text{taille en m})^2}$$

Python comme calculatrice

Je souhaite calculer mon IMC. Je mesure 1 m 80, je pèse 80 kg. Je vais faire le calcul avec Python, un peu comme si j'utilisais une calculatrice.

>>> 80 / 1.8**2
24.691358024691358

Mode progamme, programme à usage unique

Supposons que je veuille garder une trace de mon calcul, je peux l'enregistrer dans un programme.

Solution naïve, ne fonctionne pas

# imc.py
80 / 1.8**2

En effet, je vous rappelle qu'en mode programme, le résultat d'un calcul ne s'affiche que si on le demande explicitement. Donc le résultat de 80/1.8**2 ne s'affichera pas.

Affichage explicite

On a donc l'idée d'ajouter la demande d'affichage :

# calcul de mon imc
print(80 / 1.8**2)

Cette fois cela fonctionne, mais le programme est très peu lisible. On ne sait pas à quoi correspondent 80 et 1.8 par exemple.

Mauvaise idée : les commentaires

La première idée serait de remplir le programme de commentaires :

# imc.py
# Je mesure 1.8 m et je pèse 80 kg
# je calcule l'imc qui vaut taille/poids**2
print(80 / 1.8**2)

C'est bien de commenter mais pas n'importe comment. Les commentaires ne doivent pas servir à traduire un programme mal fichu. C'est une mauvaise idée.

Utiliser des variables bien nommées

taille = 1.8
poids = 80
imc = taille / poids**2
print(imc)

Voilà, nous avons obtenu un programme qui fait ce qu'on lui demande et qui est très lisible. On n'aura aucun mal à se rappeler ce que représentent les différents éléments même si on y revient 6 mois plus tard.

Il est indispensable de choisir des noms explicites pour les variables. Si une variable contient un poids, on l'appelle poids, ou a la limite p si c'est assez clair dans la situation, mais certainement pas x.

Mode programme, programme réutilisable

Je souhaite maintenant pouvoir réutiliser mon programme et même le diffuser à d'autres. Dans ce cas, un programme qui calcule toujours le même IMC n'a pas grand intérêt. Je veux un programme qui, au moment de l'utilisation, demande les grandeurs utiles et calcule le résultat correspondant.

Première réponse

# imc.py réutilisable
taille = float(input("Votre taille ? "))
poids = float(input("Votre poids ? "))
imc = taille / poids**2
print(imc)

input permet de poser une question à l'utilisateur. Le programme s'arrête en attendant la réponse. Mais Python considèrera toujours la réponse comme du texte, même si on écrit un nombre. float permet d'indiquer que l'on veut que la réponse soit interprétée comme un nombre à virgule.

Programme intégré

Comme on le verra un peu plus loin dans le cours, il est préférable d'organiser le code avec des fonctions. Cette partie prend donc un peu d'avance.

La solution est tout à fait juste mais elle a un défaut : On a l'impression que le programme ne fait qu'une chose, calculer l'imc, mais en vérité il en fait trois !

  1. lecture des données,
  2. calcul de l'imc en fonction des données,
  3. affichage du résultat.

Ici les 3 fonctions du programme sont plus ou moins confondues. Pourtant elles sont très différentes. La 1 et la 3 relève de l'interface homme - machine (IHM). Si nous voulions que notre calcul s'intègre dans un projet plus vaste, avec une interface graphique plus élégante, il faudrait plus clairement séparer les éléments.

Par exemple, supposons que ma mission est simplement de fournir de quoi calculer l'IMC. Ce sont d'autres membres de l'équipe qui s'occupent de fabriquer de beaux menus, de belles interfaces.

# imc.py intégré

def calc_imc(taille, poids):
    """
    taille: taille de l'individu en m
    poids: poids de l'individu en kg
    renvoi l'imc
    """
    imc = poids / taille**2
    return imc

Mon programme apparaît alors comme un simple module qui sera intégré dans un projet plus grand. Les autres membres de l'équipe n'auront qu'à écrire from imc import calc_imc, ce qui signifie : depuis le fichier imc.py, importer la fonction calc_imc. Ils pourront alors l'utiliser.