Exercice

Consignes

Le but de l’exercice est d’implémenter un convertisseur d’unités de distance.

Il faut être capable de convertir des kilomètres, des milles, des yards, etc..

Le programme doit s’utiliser comme suit:

python convertisseur.py 1 km mi

Il y a trois « mots » après le nom du fichier, séparés par des espaces. On appelle ces mots les « arguments » du programme.

Ici, 1 est la valeur de départ, km l’abréviation de l’unité d’arrivée et mi l’abréviation de l’unité d’arrivée.

Voici un tableau pour vous aider:

Nom

Abréviation

Valeur en mètres

mètre

m

1

kilomètre

km

1000

mille

mi

1609.344

yard

yd

0.9144

Squelette

Vous pouvez partir du code suivant:

import sys


def trouver_coefficient(unité):
    return 1.0


def conversion_en_mètres(valeur, unité_de_départ):
    coefficient = trouver_coefficient(unité_de_départ)
    return valeur * coefficient


def conversion_depuis_mètres(valeur, unité_d_arrivée):
    return 1.0


def convertir(valeur, unité_de_départ, unité_d_arrivée):
    print("Conversion de", valeur, "en", unité_de_départ, "vers", unité_d_arrivée)
    en_mètres = conversion_en_mètres(valeur, unité_de_départ)
    résultat = conversion_depuis_mètres(en_mètres, unité_d_arrivée)
    return résultat


def main():
    nombre_arguments = len(sys.argv) - 1
    if nombre_arguments != 3:
        print("3 arguments attendus, mais", nombre_arguments, "reçu(s)")
        return
    valeur = float(sys.argv[1])
    unité_de_départ = sys.argv[2]
    unité_d_arrivée = sys.argv[3]
    valeur_de_sortie = convertir(valeur, unité_de_départ, unité_d_arrivée)
    print("{:.6}".format(valeur_de_sortie))


main()

Vous noterez que le programme est capable de récupérer la valeur, l’unité de départ et l’unité d’arrivée correctement, mais que le résultat est toujours égal à 1.0.

Votre objectif est de finir l’implémentation pour réaliser effectivement la conversion.

À noter : vous n’avez pas besoin de changer l’implémentation des fonctions main() et convertir(), et ne vous inquiétez pas si vous ne comprenez pas exactement ce que fait la fonction main(), on expliquera en détail comment elle fonctionne dans un chapitre ultérieur. Pour terminer l’exercice, vous n’avez besoin que de modifier les fonctions trouver_coefficient(), conversion_en_mètres() et conversion_depuis_mètres().

À vous de jouer!