def change_dictionary(self, dictionary): for key, valor in self: delattr(self, key) self.keys = MiLista() for key, value in dictionary: self.append(key, value)
def __init__(self,nombre,habitantes, frontera, aeropuerto,infectados = 0,infeccion = None, muertos = 0 ,estado_aeropuerto = True,estado_frontera = True, mascarilla = False,dia_actual = 0,cura = False, dia_extincion = None,dia_inicio_infeccion = None): self.nombre = nombre self.habitantes = habitantes self.muertos = muertos self.infectados = infectados self.infeccion = infeccion self.dia_extincion = dia_extincion self.dia_actual = dia_actual self.dia_inicio_infeccion = dia_inicio_infeccion if aeropuerto: self.aeropuerto = aeropuerto else: self.aeropuerto = MiLista() if frontera: self.frontera = frontera else: self.frontera = MiLista() #booleans: self.mascarilla = mascarilla self.estado_frontera = estado_frontera self.estado_aeropuerto = estado_aeropuerto self.cura = cura
def borders_to_dict(): with open("Archivos/borders.csv") as f: x = csv.reader(f, delimiter=";") total = DiccionarioOrdenado() for line in x: linea = MiLista(*line) total.append(linea[0], linea[1]) total.pop() for key, pais2 in total: if type(pais2) != MiLista: total[key] = MiLista(pais2) return total
def append(self, key, valor): # genera una lista si la key ya existe if hasattr(self, str(key)): if type(getattr(self, str(key))) != MiLista: setattr(self, str(key), MiLista(getattr(self, str(key)))) getattr(self, str(key)) + valor else: self.__setitem__(str(key), valor)
def airports_to_dict(): with open("Archivos/random_airports.csv") as f: x = csv.reader(f, delimiter=",") total = DiccionarioOrdenado() for line in x: linea = MiLista(*line) total.append(linea[0], linea[1]) total.pop() f.close() return total
def csv_to_dict_of_dicts(archivo): with open("Archivos/" + archivo) as f: x = csv.reader(f, delimiter=",") total = DiccionarioOrdenado() header = None for line in x: if not header: header = MiLista(*line) header.pop() else: linea = MiLista(*line) pais = linea.pop() info = DiccionarioOrdenado() i = 0 for j in header: info.append(j, linea[i]) i += 1 total.append(pais, info) return total
def load_to_mundo(): with open("Archivos/load.csv", "r") as f: x = csv.reader(f, delimiter=";") mundo = DiccionarioOrdenado() firstline = False for line in x: linea = MiLista(*line) if not firstline: firstline = True if linea[0] == "None": dia_descubrimiento_infeccion = None else: dia_descubrimiento_infeccion = int(linea[0]) if linea[1] == "None": dia_descubrimiento_cura = None else: dia_descubrimiento_cura = int(linea[1]) progreso_al_dia = int(linea[2]) poseedores_de_cura = MiLista() if len(linea[3]) != 2: x = linea[3][1:-1].replace(" ", "").split(",") poseedores_de_cura = MiLista(*x) cola_propuestas = DiccionarioOrdenado() if len(linea[4]) != 2: x = linea[4][1:-1].replace(" ", "").split(",") for key, valor in x.split(":"): cola_propuestas[key] = valor continue nombre, habitantes, infectados, infeccion, muertos, estado_aeropuerto, estado_frontera, mascarilla, dia_actual, cura = linea[ 0], int(linea[1]), int(linea[4]), (linea[5]), int( linea[6]), bool(linea[7]), bool(linea[8]), bool( linea[9]), int(linea[10]), bool(linea[11]) frontera = MiLista() if len(linea[2]) != 2: x = linea[2][1:-1].replace(" ", "").split(",") frontera = MiLista(*x) aeropuerto = MiLista() if len(linea[3]) != 2: x = linea[3][1:-1].replace(" ", "").split(",") aeropuerto = MiLista(*x) if linea[12] == "None": dia_extincion = None else: dia_extincion = int(linea[12]) if linea[13] == "None": dia_inicio_infeccion = None else: dia_inicio_infeccion = int(linea[13]) if infeccion != "None" or infeccion: infeccion = Infeccion(infeccion) else: infeccion = None pais = Pais(nombre, habitantes, frontera, aeropuerto, infectados, infeccion, muertos, estado_aeropuerto, estado_frontera, mascarilla, dia_actual, cura, dia_extincion, dia_inicio_infeccion) mundo.append(nombre, pais) return mundo, dia_descubrimiento_infeccion, dia_descubrimiento_cura, progreso_al_dia, poseedores_de_cura, cola_propuestas
def values(self): x = MiLista() for key, value in self: x.append(value) return x
def __init__(self): self.keys = MiLista()
class DiccionarioOrdenado(): def __init__(self): self.keys = MiLista() @property def values(self): x = MiLista() for key, value in self: x.append(value) return x def append(self, key, valor): # genera una lista si la key ya existe if hasattr(self, str(key)): if type(getattr(self, str(key))) != MiLista: setattr(self, str(key), MiLista(getattr(self, str(key)))) getattr(self, str(key)) + valor else: self.__setitem__(str(key), valor) def get_by_position(self, position): return self[self.keys[position]] def get_key(self, valor): for key, valors in self: if valors == valor: return key return None def pop(self, posicion=0): dict = DiccionarioOrdenado() i = 0 for key, value in self: if i != posicion: dict.append(key, value) else: llave, valor = key, value i += 1 self.change_dictionary(dict) return llave, valor def sort_values(self): x = DiccionarioOrdenado() valores = self.values.sort() for j in valores: key = self.get_key(j) x[key] = j self.change_dictionary(x) return self def change_dictionary(self, dictionary): for key, valor in self: delattr(self, key) self.keys = MiLista() for key, value in dictionary: self.append(key, value) def __iter__(self): for key in self.keys: yield key, getattr(self, key) def __len__(self): return len(self.keys) def __setitem__( self, key, valor): # si ya existe la key, entonces le modifica el valor if not hasattr(self, str(key)): self.keys.append(str(key)) setattr(self, str(key), valor) def __getitem__(self, key): for keys in self.keys: if str(key) == keys: return getattr(self, str(key)) return None def __repr__(self): x = "{" y = "}" for key, valor in self: x += "'{}'".format(str(key)) + ": " + str(valor) + ", " if len(x) != 1: x = x[:-2] return x + y
if menupartida == 1: dia = 0 connections_generator.generate_connections() grafo_tierra = borders_to_dict() grafo_aire = airports_to_dict() pais_poblacion = csv_to_dict_of_dicts("population.csv") # se crean todos los paises con sus respectivos habitantes y fronteras. # (estado inicial) for pais, informacion in pais_poblacion: mundo.append(pais, Pais(nombre=pais, habitantes=int(informacion[ "Poblacion"]), frontera=grafo_tierra[pais], aeropuerto=grafo_aire[pais])) menupais = Menu() x = MiLista() i = 1 for key, _ in pais_poblacion: x.append(menupais.append(str(i), key)) i += 1 nombre_pais_inicio = menupais.display() # string pais_inicio = mundo[nombre_pais_inicio] # pais menuinfeccion = Menu("Virus", "Bacteria", "ParĂ¡sito") infeccion = menuinfeccion.display() # string pais_inicio.inicio_infeccion(infeccion, dia) # ahora el mundo tiene todos los paises con condicion inicial y un pais # con la infeccion mundo[nombre_pais_inicio] = pais_inicio dia_descubrimiento_infeccion = None dia_descubrimiento_cura = None