Ejercicio: 2Eva2016TII_T2 País destino para jubilados extranjeros
Propuesta de solución en Python:
requiere usar el archivo: destinosdatos.txt
# CCPG1001-Fundamentos de programación FIEC-ESPOL
# 2Eva_IIT2016_T2 País destino para jubilados extranjeros
def cargarDatos(nomFile):
datos = {}
archivo = open(nomFile, 'r')
linea = archivo.readline()
while not(linea==''):
linea = linea.strip('\n')
partes = linea.split(',')
ciu = partes[0]
met = partes[1]
val = float(partes[2])
if not(ciu in datos):
datos[ciu] = {met:val}
else:
datos[ciu][met]= val
linea = archivo.readline()
archivo.close()
return(datos)
def metricaPais(datos, paises):
promedios = {}
for unpais in paises:
totalcanasta = 0
totaltemperatura = 0
ciudades = paises[unpais]
for unaciudad in ciudades:
unacanasta = datos[unaciudad]['canastaBasica']
totalcanasta = totalcanasta + unacanasta
unatemp = datos[unaciudad]['temperatura']
totaltemperatura = totaltemperatura + unatemp
# los promedios son por pais
promediocanasta = totalcanasta/len(ciudades)
promediotemperatura = totaltemperatura/len(ciudades)
promedios[unpais] = {'canastaBasica': promediocanasta,
'temperatura': promediotemperatura}
return(promedios)
def generaPaises(promedios, metrica, minimo, maximo):
narchivo = 'cumplencon.csv'
archivo = open(narchivo, 'w')
for unpais in promedios:
valor = promedios[unpais][metrica]
if (valor>=minimo and valor<=maximo):
linea = unpais +'\n'
archivo.write(linea)
archivo.close
mensaje = 'resultados en archivo'
return(mensaje)
# PROGRAMA Prueba
# INGRESO
paises = {'Ecuador':{'Cuenca','Guayaquil'},
'Colombia':{'Bogotá'}}
nomFile = 'destinosdatos.txt'
metrica = input('cual metrica: ')
minimo = float(input('minimo: '))
maximo = float(input('maximo: '))
# PROCEDIMIENTO
tabla = cargarDatos(nomFile)
promedios = metricaPais(tabla, paises)
cualescumplen = generaPaises(promedios, metrica, minimo, maximo)
# SALIDA
print('tabla de datos: ')
print(tabla)
print('paises')
print(paises)
print('promedios de características')
print(promedios)
print('paises de interes para el jubilado, en archivo')