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 où
id_velo est un nombre entier compris entre 1 et 199 qui correspond à l'identifiant unique du vélodict_velo est un dictionnaire dont les clés sont :"type" : chaîne de caractères. Soit "electrique", soit "classique"."etat" : entier. 1 si le vélo est disponible, 0 si le vélo est en déplacement, -1 si le vélo est en panne."station" : chaîne de caractères qui identifie la station où est garé le vélo. Dans le cas où le vélo est en déplacement ou en panne, "station" correspond à celle où il a été dernièrement stationné.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.
flotte[26] ?flotte[80]["etat"] ?flotte[99]["etat"] ?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"]
id_velo de tous les vélos disponibles à la station "Citadelle".id_velo et la station de tous les vélos électriques qui ne sont pas en panne.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.