TP :
1. Télécharger le fichier csv suivant
2. Copier et coller le code python suivant dans un fichier voyageur_commerce.py situé dans le même dossier que le précédent fichier csv
def ouvrir_donnees():
fichier = open("donnes_villes.csv", "r")
donnees = fichier.read()
donnees = donnees.replace (",", ".").split("\n")
donnees=[ t.strip ("\r\n ").split (";") for t in donnees ]
fichier.close()
return donnees
3. Etudier le format de données
4. Ecrire une fonction permettant de déterminer la distance entre 2 villes
def distance(ville1,ville2):
5. Ecrire une fonction permettant de déterminer le meilleur trajet pour relier différentes villes figurant dans les données.
6. Utiliser le module folium pour placer les villes et tracer le trajet.
Proposition de correction
def ouvrir_donnees():
fichier = open("donnes_villes.csv", "r")
donnees = fichier.read()
donnees = donnees.replace (",", ".").split("\n")
donnees=[ t.strip ("\r\n ").split (";") for t in donnees ]
fichier.close()
return donnees
donnees=ouvrir_donnees()
def indice(nom_ville):
for i in range(len(donnees)):
if nom_ville==donnees[i][0]:
return i
return None
def distance(ville1,ville2):
'''
>>>distance("Nantes","Strasbourg")
865
>>>distance("Caen","Rennes")
185
'''
imin=min(indice(ville1),indice(ville2))
imax=max(indice(ville1),indice(ville2))
return int(donnees[imax][3+imin])
villes=["Lille","Caen","Marseille","Saint-Etienne",
"Paris","Brest","Toulouse","Strasbourg",
"Le Havre","Lens"]
def meilleur_trajet(villes):
trajet=[villes[0]]
villes_restantes=villes.copy()
del(villes_restantes[0])
while len(villes_restantes)!=0:
dmin=distance(trajet[-1],villes_restantes[0])
ville_plus_proche=villes_restantes[0]
for ville in villes_restantes:
if distance(ville,trajet[-1]) <dmin:
dmin=distance(ville,trajet[-1])
ville_plus_proche=ville
villes_restantes.remove(ville_plus_proche)
trajet.append(ville_plus_proche)
print(trajet,villes_restantes)
return trajet