Exercice sur les dictionnaires

Il s'agit de l'exercice 2 de ce sujet.

Une ville souhaite gérer son parc de vélos en location partagée. L'ensemble de la flotte de vélos est stocké dans une table de données représentée en langage Python par un dictionnaire contenant des associations de type id_velo : dict_velo

Voici un extrait de la table de données :

flotte = {
    12 : {"type":"electrique", "etat" : 1, "station" : "Prefecture"},
    80 : {"type":"classique", "etat" : 0, "station" : "Saint-Leu"},
    45 : {"type":"classique", "etat" : 1, "station" : "Baraban"},
    41 : {"type":"classique", "etat" : -1, "station" : "Citadelle"},
    26 : {"type":"classique", "etat" : 1, "station" : "Coliseum"},
    28 : {"type":"electrique", "etat" : 0, "station" : "Coliseum"},
    74 : {"type":"electrique", "etat" : 1, "station" : "Jacobins"},
    13 : {"type":"classique", "etat" : 0, "station" : "Citadelle"},
    83 : {"type":"classique", "etat" : -1, "station" : "Saint-Leu"},
    22 : {"type":"electrique", "etat" : -1, "station" : "Joffre"}
}

flotte étant une variable globale du programme.

Le sujet prévoyait une annexe rappelant quelques commandes sur les dictionnaires. Je ne la reproduit pas ici mais j'ai laissé un lien vers le sujet, vous pouvez l'ouvrir et voir à quoi ressemble cette annexe.

Toutes les questions de cet exercice se réfèrent à l'extrait de la table flotte fourni ci-dessus.

Question 1

  1. Que renvoie l'instruction flotte[26] ?
  2. Que renvoie l'instruction flotte[80]["etat"] ?
  3. Que renvoie l'instruction flotte[99]["etat"] ?

Question 2

Voici le script d'une fonction :

def proposition(choix):
    for v in flotte:
        if flotte[v]["type"] == choix and flotte[v]["etat"] == 1:
            return flotte[v]["station"]
  1. Quelles sont les valeurs possibles de la variable choix ?
  2. Expliquer ce que renvoie la fonction lorsque l'on choisit comme paramètre l'une des valeurs possibles de la variable choix.

Question 3

  1. Écrire un script en langage Python qui affiche les identifiants id_velo de tous les vélos disponibles à la station "Citadelle".
  2. Écrire un script en langage Python qui permet d'afficher l'identifiant id_velo et la station de tous les vélos électriques qui ne sont pas en panne.

Question 4

On dispose d'une table de données des positions GPS de toutes les stations, dont un extrait est donné ci-dessous. Cette table est stockée sous forme d’un dictionnaire.

Chaque élément du dictionnaire est du type: 'nom de la station' : (latitude, longitude)

stations = {
    'Prefecture' : (49.8905, 2.2967) ,
    'Saint-Leu' : (49.8982, 2.3017),
    'Coliseum' : (49.8942, 2.2874),
    'Jacobins' : (49.8912, 2.3016)
}

On admet que l'on dispose d'une fonction distance(p1, p2) permettant de renvoyer la distance en mètres entre deux positions données par leurs coordonnées GPS (latitude et longitude).

Cette fonction prend en paramètre deux tuples représentant les coordonnées des deux positions GPS et renvoie un nombre entier représentant cette distance en mètres.

Par exemple, distance((49.8905, 2.2967), (49.8912, 2.3016)) renvoie 9591.

Écrire une fonction qui prend en paramètre les coordonnées GPS de l'utilisateur sous forme d’un tuple et qui renvoie, pour chaque station située à moins de 800 mètres de l'utilisateur :

Une station où aucun vélo n’est disponible ne doit pas être affichée.