2Eva_IT2016_T2 Distancias entre ciudades de Ecuador

2da Evaluación I Término 2016-2017. Agosto 30, 2016 /CCPG001 – FIEC
(Editado para tarea, se manteniene el objetivo de aprendizaje)

TEMA 2. (60 PUNTOS) Las distancias entre ciudades del Ecuador conectadas directamente por una carretera están almacenadas en el archivo ‘Ecuador_Distancias.txt‘ con el siguiente formato:

Ciudad_de_Partida|Ciudad,Distancia|Ciudad,Distancia|...|Ciudad,Distancia

Por ejemplo:
Ambato|Azogues,280|Babahoyo,212|Pedernales,318
Azogues|Pedernales,555|Babahoyo,125
Pedernales|Ambato,318|Azogues,555
Babahoyo|Ambato,250
...

Implemente las siguientes funciones:

a) cargarDatos(nombreArchivo) que recibe el nombre del archivo como string y retorna el diccionario distancias con el siguiente formato:

distancias = {
 'Ambato':{'Azogues':280,'Babahoyo':212,'Pedernales':318},
 'Azogues':{'Pedernales':555,'Babahoyo':125},
 'Babahoyo':{'Ambato':250} 
 }

b) ciudadesCercanas(distancias, km) donde distancias es el diccionario generado en el literal a) y km es un valor entero positivo . La función retorna una lista de tuplas con todos los pares de ciudades conectadas directamente por una carretera que estén a una distancia menor o igual que el valor de km.
La tupla incluye los valores de ‘ciudad1’, ‘ciudad2’, ‘distancia’ que las separa. Por ejemplo:

>>> ciudadesCercanas(distancias,300) 
retorna: 
[('Ambato','Azogues',280), ('Ambato','Babahoyo',212), 
 ('Azogues','Babahoyo',125), ('Babahoyo','Ambato',250)]

c)  guardarCiudadesCercanas(distancias, listaKms) que recibe el diccionario de distancias y una lista con varias distancias en kilómetros, para generar un archivo con las ciudades separadas a máximo dicha distancia. Por ejemplo:

>>>guardarCiudadesCercanas(distancias, [300, 100, 250]) 
genera los siguientes tres archivos: 
ciudades300.txt, 
ciudades100.txt, 
ciudades250.txt.

El archivo ‘ciudades300.txt’ tendría el siguiente contenido:

Ambato,Azogues,280
Ambato,Babahoyo,212
Azogues,Babahoyo,125
Babahoyo,Ambato,250

Referencia: Archivo original 2Eva_IT2016.pdf