Example #1
0
    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)
Example #2
0
    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
Example #3
0
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
Example #4
0
    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)
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
 def values(self):
     x = MiLista()
     for key, value in self:
         x.append(value)
     return x
Example #9
0
 def __init__(self):
     self.keys = MiLista()
Example #10
0
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
Example #11
0
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