def __init__(self): self.dia = 0 self.lista_paises = Lista() self.infeccion = None self.mundo = Mundo() print("Menu:\n1 : Nueva Partida\n2 : Cargar Partida") iniciar = False while not iniciar: opcion = input("Ingrese alguna opcion: ") try: val = int(opcion) opcion = int(opcion) if opcion == 1: iniciar = True self.nueva_partida() for pais in self.lista_paises: self.mundo.lista_paises.append(pais) self.lista_paises.clear() self.pasar_dia() self.menu() elif opcion == 2: try: self.cargar_partida() iniciar = True self.menu() except FileNotFoundError: print("\nNo hay partida guardada\n") else: print("opcion no valida") except ValueError: print("opcion no valida")
def propagar_cura(self): lista = Lista() for pais in self.mundo.lista_paises: if pais.cura: if pais.aeropuerto: for elemento in pais.aeropuerto.conexiones: lista.append(elemento) for nombre in lista: for pais1 in self.mundo.lista_paises: if pais1.nombre == nombre: if not pais1.cura: pais1.cura = True
class Aeropuerto: def __init__(self, nombre, conexion): self.nombre = nombre self.estado = True self.conexiones = Lista() self.agregar_conexion(conexion) def agregar_conexion(self, pais): self.conexiones.append(pais) def __str__(self): return self.nombre + ":" + str(self.conexiones)
def __init__(self): self.dia = 1 self.lista_paises = Lista() self.detectar = False self.progreso = 0 self.cura = False self.propuestas = Lista() self.dato_infecciones = 0 self.dato_muertes = 0 self.resumen = Lista() self.datos_dia = Lista() self.datos_dia.append("dia: 0, infectados: 1, muertos: 0")
def cargar_archivos_basicos(self): generate_connections() with open("population.csv") as archivo: for linea in archivo: separar = linea.strip("\n").split(",") lista_buena = Lista(*separar) if lista_buena[0] == "Pais": None else: pais = Pais(lista_buena[0], lista_buena[1]) self.lista_paises.append(pais) with open("borders.csv") as archivo: for linea in archivo: separar = linea.strip("\n").split(";") lista_buena = Lista(*separar) nombre = lista_buena[0] if nombre == "Pais 1": None else: borde = lista_buena[1] for pais in self.lista_paises: if nombre == pais.nombre: if borde not in pais.conexiones_tierra: pais.conexiones_tierra.append(borde) for elemento in self.lista_paises: if elemento.nombre == borde: elemento.conexiones_tierra.append( pais.nombre) with open("random_airports.csv") as archivo: for linea in archivo: separar = linea.strip("\n").split(",") lista_buena = Lista(*separar) nombre = lista_buena[0].title() conexion = lista_buena[1].title() for elemento in self.lista_paises: if nombre == elemento.nombre: if elemento.aeropuerto == None: elemento.aeropuerto = Aeropuerto(nombre, conexion) elif conexion not in elemento.aeropuerto.conexiones: elemento.aeropuerto.agregar_conexion(conexion) for pais in self.lista_paises: if conexion == pais.nombre: if pais.aeropuerto == None: pais.aeropuerto = Aeropuerto( conexion, nombre) elif nombre not in pais.aeropuerto.conexiones: pais.aeropuerto.conexiones.append(nombre)
def __init__(self, nombre, poblacion): self.nombre = nombre self.poblacion = int(poblacion) self.poblacion_infectada = 0 self.poblacion_muerta = 0 self.conexiones_tierra = Lista() self.aeropuerto = None self.mascarillas = False self.frontera = True self.cura = False self.dias_infectado = 0
def evaluar_propuestas(self): rango = len(self.mundo.propuestas) + 1 for i in range(1, min(4, rango)): prop = self.mundo.propuestas.pop() separar = prop.split(";") lista = Lista(*separar) self.mundo.resumen.append(lista) nombre = lista[1] iniciativa = lista[2] for pais in self.mundo.lista_paises: if pais.nombre == nombre: if iniciativa == "cerrar frontera": pais.frontera = False elif iniciativa == "cerrar aeropuerto": pais.aeropuerto.estado = False elif iniciativa == "entregar mascarillas": pais.mascarillas = True elif iniciativa == "abrir frontera": pais.frontera = True elif iniciativa == "abrir aeropuerto": pais.aeropuerto.estado = True self.mundo.propuestas.clear()
def cargar_partida(self): with open("partida_guardada.txt") as archivo: contador = 1 for linea in archivo: if contador == 1: self.dia = int(linea.strip("\n")) contador += 1 elif contador == 2: separar = linea.strip("\n").split(";") lista = Lista(*separar) self.infeccion = Infeccion(lista[0], float(lista[1]), float(lista[2]), float(lista[3]), float(lista[4])) contador += 1 elif contador == 3: separar = linea.strip("\n").split(";") lista = Lista(*separar) self.mundo = Mundo() self.mundo.dia = int(lista[0]) self.mundo.detectar = bool(lista[1]) self.mundo.progreso = float(lista[2]) self.mundo.cura = bool(lista[3]) lista1 = Lista(*lista[4].strip("[").strip("]").split(",")) for i in lista1: if i == "": pass else: self.mundo.propuestas.append(i) self.mundo.dato_infecciones = int(lista[5]) self.mundo.dato_muertes = int(lista[6]) lista2 = Lista(*lista[7].strip("[").strip("]").split(",")) for i in lista2: self.mundo.resumen.append(i) lista3 = Lista(*lista[8].strip("[").strip("]").split(",")) for i in lista3: self.mundo.datos_dia.append(i) contador += 1 else: separar = linea.strip("\n").split(";") lista = Lista(*separar) pais = Pais(lista[0], lista[1]) self.mundo.lista_paises.append(pais) for paises in self.mundo.lista_paises: if paises.nombre == lista[0]: paises.poblacion_infectada = int(lista[2]) paises.poblacion_muerta = int(lista[3]) lista1 = Lista( *lista[4].strip("[").strip("]").split(";")) for i in lista1: paises.conexiones_tierra.append(i) if lista[5] == None: paises.aeropuerto = None elif lista[5] != None: lista2 = Lista(*lista[5].split(":")) for i in lista2: lista3 = Lista(*lista2[2].strip("[").strip( "]").split(",")) paises.aeropuerto = Aeropuerto( lista2[0], lista3[0]) for j in lista3: if j not in paises.aeropuerto.conexiones: paises.aeropuerto.conexiones.append( j) paises.mascarillas = bool(lista[6]) paises.frontera = bool(lista[7]) paises.cura = bool(lista[8]) paises.dias_infectado = int(bool(lista[9]))
class Pandemic: def __init__(self): self.dia = 0 self.lista_paises = Lista() self.infeccion = None self.mundo = Mundo() print("Menu:\n1 : Nueva Partida\n2 : Cargar Partida") iniciar = False while not iniciar: opcion = input("Ingrese alguna opcion: ") try: val = int(opcion) opcion = int(opcion) if opcion == 1: iniciar = True self.nueva_partida() for pais in self.lista_paises: self.mundo.lista_paises.append(pais) self.lista_paises.clear() self.pasar_dia() self.menu() elif opcion == 2: try: self.cargar_partida() iniciar = True self.menu() except FileNotFoundError: print("\nNo hay partida guardada\n") else: print("opcion no valida") except ValueError: print("opcion no valida") def cargar_partida(self): with open("partida_guardada.txt") as archivo: contador = 1 for linea in archivo: if contador == 1: self.dia = int(linea.strip("\n")) contador += 1 elif contador == 2: separar = linea.strip("\n").split(";") lista = Lista(*separar) self.infeccion = Infeccion(lista[0], float(lista[1]), float(lista[2]), float(lista[3]), float(lista[4])) contador += 1 elif contador == 3: separar = linea.strip("\n").split(";") lista = Lista(*separar) self.mundo = Mundo() self.mundo.dia = int(lista[0]) self.mundo.detectar = bool(lista[1]) self.mundo.progreso = float(lista[2]) self.mundo.cura = bool(lista[3]) lista1 = Lista(*lista[4].strip("[").strip("]").split(",")) for i in lista1: if i == "": pass else: self.mundo.propuestas.append(i) self.mundo.dato_infecciones = int(lista[5]) self.mundo.dato_muertes = int(lista[6]) lista2 = Lista(*lista[7].strip("[").strip("]").split(",")) for i in lista2: self.mundo.resumen.append(i) lista3 = Lista(*lista[8].strip("[").strip("]").split(",")) for i in lista3: self.mundo.datos_dia.append(i) contador += 1 else: separar = linea.strip("\n").split(";") lista = Lista(*separar) pais = Pais(lista[0], lista[1]) self.mundo.lista_paises.append(pais) for paises in self.mundo.lista_paises: if paises.nombre == lista[0]: paises.poblacion_infectada = int(lista[2]) paises.poblacion_muerta = int(lista[3]) lista1 = Lista( *lista[4].strip("[").strip("]").split(";")) for i in lista1: paises.conexiones_tierra.append(i) if lista[5] == None: paises.aeropuerto = None elif lista[5] != None: lista2 = Lista(*lista[5].split(":")) for i in lista2: lista3 = Lista(*lista2[2].strip("[").strip( "]").split(",")) paises.aeropuerto = Aeropuerto( lista2[0], lista3[0]) for j in lista3: if j not in paises.aeropuerto.conexiones: paises.aeropuerto.conexiones.append( j) paises.mascarillas = bool(lista[6]) paises.frontera = bool(lista[7]) paises.cura = bool(lista[8]) paises.dias_infectado = int(bool(lista[9])) def nueva_partida(self): self.cargar_archivos_basicos() entrar = False while not entrar: tipo = input( "Ingrese el tipo de infeccion(virus,bacteria,parasito): ") if tipo == "virus": self.infeccion = Infeccion(tipo, 1.5, 1.2, 1.5, 0.5) entrar = True elif tipo == "bacteria": self.infeccion = Infeccion(tipo, 1.0, 1.0, 0.5, 0.7) entrar = True elif tipo == "parasito": self.infeccion = Infeccion(tipo, 0.5, 1.5, 1.0, 0.45) entrar = True else: print("Opcion no valida") entrar1 = False while not entrar1: print("Ingrese el pais donde desea partir la infeccion") pais_elegido = input("ingrese 0 para ver lista de paises: ") if str(pais_elegido) == "0": for pais in self.lista_paises: print(pais) else: for paises in self.lista_paises: if pais_elegido == paises.nombre: paises.poblacion_infectada += 1 paises.dias_infectado += 1 entrar1 = True break def cargar_archivos_basicos(self): generate_connections() with open("population.csv") as archivo: for linea in archivo: separar = linea.strip("\n").split(",") lista_buena = Lista(*separar) if lista_buena[0] == "Pais": None else: pais = Pais(lista_buena[0], lista_buena[1]) self.lista_paises.append(pais) with open("borders.csv") as archivo: for linea in archivo: separar = linea.strip("\n").split(";") lista_buena = Lista(*separar) nombre = lista_buena[0] if nombre == "Pais 1": None else: borde = lista_buena[1] for pais in self.lista_paises: if nombre == pais.nombre: if borde not in pais.conexiones_tierra: pais.conexiones_tierra.append(borde) for elemento in self.lista_paises: if elemento.nombre == borde: elemento.conexiones_tierra.append( pais.nombre) with open("random_airports.csv") as archivo: for linea in archivo: separar = linea.strip("\n").split(",") lista_buena = Lista(*separar) nombre = lista_buena[0].title() conexion = lista_buena[1].title() for elemento in self.lista_paises: if nombre == elemento.nombre: if elemento.aeropuerto == None: elemento.aeropuerto = Aeropuerto(nombre, conexion) elif conexion not in elemento.aeropuerto.conexiones: elemento.aeropuerto.agregar_conexion(conexion) for pais in self.lista_paises: if conexion == pais.nombre: if pais.aeropuerto == None: pais.aeropuerto = Aeropuerto( conexion, nombre) elif nombre not in pais.aeropuerto.conexiones: pais.aeropuerto.conexiones.append(nombre) def menu(self): self.salir = False while not self.salir: print("Menu\nDia: " + str(self.dia)) print( "1 : Pasar dia\n2 : Estadisticas\n3 : Guardar estado\n4 : Salir" ) x = input("Ingrese opcion: ") try: var = int(x) if var in [1, 2, 3, 4]: if var == 1: self.pasar_dia() elif var == 2: self.estadisticas() elif var == 3: self.guardar_estado() print("Partida guardada correctamente") else: self.salir = True print("juego cerrado") else: ("Numero fuera de las opciones validas") except ValueError: print("Opcion no valida, ingrese un numero") def pasar_dia(self): self.mundo.resumen.clear() self.mundo.dato_muertes = self.mundo.poblacion_mundial_muerta self.mundo.dato_infecciones = self.mundo.poblacion_mundial_infectada self.dia += 1 self.mundo.dia += 1 self.contagios_personas() self.arreglador() self.muertes() self.contagio_frontera_aeropuerto() self.buscar_cura() self.trabajar_en_cura() self.evaluar_propuestas() self.generar_propuestas() self.actuar_cura() self.propagar_cura() self.mundo.dato_muertes = self.mundo.poblacion_mundial_muerta - self.mundo.dato_muertes self.mundo.dato_infecciones = self.mundo.poblacion_mundial_infectada - self.mundo.dato_infecciones dato = "dia: {}, nuevos infectados: {}, nuevos muertos: {}".format( int(self.dia), self.mundo.dato_infecciones, self.mundo.dato_muertes) self.mundo.datos_dia.append(dato) def contagios_personas(self): for pais in self.mundo.lista_paises: if pais.poblacion > (pais.poblacion_infectada + pais.poblacion_muerta): if pais.mascarillas: mod = 0.3 elif not pais.mascarillas: mod = 1 if pais.poblacion_infectada > 0: pais.dias_infectado += 1 if pais.poblacion_infectada < 100000: for i in range(1, pais.poblacion_infectada + 1): pais.poblacion_infectada += int( random.randint(0, 6) * mod * self.infeccion.contagiosidad) else: contador = pais.poblacion_infectada while contador > 0: if contador > 1000: contador -= 1000 pais.poblacion_infectada += int( 1000 * random.randint(0, 6) * mod * self.infeccion.contagiosidad) else: for persona in range(1, contador + 1): pais.poblacion_infectada += int( random.randint(0, 6) * mod * self.infeccion.contagiosidad) contador = 0 def muertes(self): probabilidad_muerte = (min( (min(0.2, (self.dia**2) / 100000)) * self.infeccion.mortalidad, 1)) for pais in self.mundo.lista_paises: if pais.estatus != "muerto": if pais.poblacion_infectada < 500000: for persona in range(1, pais.poblacion_infectada + 1): if probabilidad(probabilidad_muerte): pais.poblacion_infectada -= 1 pais.poblacion_muerta += 1 elif pais.poblacion_infectada < 5000000000: contador = pais.poblacion_infectada while contador > 0: if contador > 1000: contador -= 1000 if probabilidad(probabilidad_muerte): pais.poblacion_infectada -= 1000 pais.poblacion_muerta += 1000 else: for persona in range(1, contador + 1): if probabilidad(probabilidad_muerte): pais.poblacion_infectada -= 1 pais.poblacion_muerta += 1 contador = 0 def contagio_frontera_aeropuerto(self): for pais in self.mundo.lista_paises: conexiones = len(pais.conexiones_tierra) if pais.aeropuerto: conexiones += len(pais.aeropuerto.conexiones) if (pais.poblacion_infectada / pais.poblacion) > 0.2 and pais.frontera: probabilidad_contagio = min( 1, (0.07 * pais.poblacion_infectada) / ((pais.poblacion - pais.poblacion_muerta) * conexiones)) probabilidad_contagio = 0.9 for vecinos in pais.conexiones_tierra: if probabilidad(probabilidad_contagio): for paises in self.mundo.lista_paises: if vecinos == paises.nombre and paises.frontera: paises.poblacion_infectada += 1 paises.dias_infectado += 1 if pais.aeropuerto: if (self.mundo.poblacion_mundial_infectada / self.mundo.poblacion_mundial ) > 0.04 and pais.aeropuerto.estado: probabilidad_contagio = min( 1, (0.07 * pais.poblacion_infectada) / ((pais.poblacion - pais.poblacion_muerta) * conexiones)) for vecinos in pais.aeropuerto.conexiones: if probabilidad(probabilidad_contagio * 100): for paises in self.mundo.lista_paises: if vecinos == paises.nombre and paises.aeropuerto.estado: paises.poblacion_infectada += 1 paises.dias_infectado += 1 def arreglador(self): for pais in self.mundo.lista_paises: if pais.poblacion_infectada > pais.poblacion: pais.poblacion_infectada = pais.poblacion - pais.poblacion_muerta def buscar_cura(self): if not self.mundo.detectar: self.mundo.detectar = self.mundo.buscar_cura( self.infeccion.visibilidad) def trabajar_en_cura(self): if not self.mundo.cura: if self.mundo.detectar and self.mundo.progreso < 1: self.mundo.trabajar_cura() if self.mundo.progreso >= 1: pais = random.choice(self.mundo.lista_paises) pais.cura = True self.mundo.cura = True def generar_propuestas(self): for pais in self.mundo.lista_paises: try: prioridad = pais.poblacion_infectada / pais.poblacion except ZeroDivisionError: pass if pais.cerrar_aeropuerto(): prioridad *= 0.8 txt = "{};{};cerrar aeropuerto".format(prioridad, pais.nombre) self.mundo.propuestas.append(txt) prioridad = pais.poblacion_infectada / pais.poblacion_infectada if pais.cerrar_frontera(): contador = 0 total_infec_porcen = 0 for conexiones in pais.conexiones_tierra: for paises in self.mundo.lista_paises: if paises.nombre == conexiones: contador += 1 total_infec_porcen += paises.porcentaje_infectados mod = (total_infec_porcen / contador) / 100 prioridad *= mod txt = "{};{};cerrar frontera".format(prioridad, pais.nombre) self.mundo.propuestas.append(txt) prioridad = pais.poblacion_infectada / pais.poblacion_infectada if pais.entregar_mascarillas(): prioridad *= 0.5 txt = "{};{};entregar mascarillas".format( prioridad, pais.nombre) self.mundo.propuestas.append(txt) prioridad = pais.poblacion_infectada / pais.poblacion_infectada if pais.abrir_aeropuerto(): if pais.cura: mod = 1 else: mod = 0.7 txt = "{};{};abrir aeropuerto".format(prioridad, pais.nombre) self.mundo.propuestas.append(txt) prioridad = (pais.poblacion_infectada / pais.poblacion_infectada) * mod if pais.abrir_frontera(): mod = 0.7 prioridad = (pais.poblacion_infectada / pais.poblacion_infectada) * mod txt = "{};{};abrir frontera".format(prioridad, pais.nombre) self.mundo.propuestas.append(txt) self.mundo.propuestas.sort() def evaluar_propuestas(self): rango = len(self.mundo.propuestas) + 1 for i in range(1, min(4, rango)): prop = self.mundo.propuestas.pop() separar = prop.split(";") lista = Lista(*separar) self.mundo.resumen.append(lista) nombre = lista[1] iniciativa = lista[2] for pais in self.mundo.lista_paises: if pais.nombre == nombre: if iniciativa == "cerrar frontera": pais.frontera = False elif iniciativa == "cerrar aeropuerto": pais.aeropuerto.estado = False elif iniciativa == "entregar mascarillas": pais.mascarillas = True elif iniciativa == "abrir frontera": pais.frontera = True elif iniciativa == "abrir aeropuerto": pais.aeropuerto.estado = True self.mundo.propuestas.clear() def actuar_cura(self): probabilidad_cura = (probabilidad(0.25 * self.infeccion.resistencia_medicina)) for pais in self.mundo.lista_paises: if pais.cura: if pais.estatus != "muerto": if pais.poblacion_infectada < 500000: for persona in range(1, pais.poblacion_infectada + 1): if probabilidad(probabilidad_cura): pais.poblacion_infectada -= 1 elif pais.poblacion_infectada < 5000000000: contador = pais.poblacion_infectada while contador > 0: if contador > 1000: contador -= 1000 if probabilidad(probabilidad_cura): pais.poblacion_infectada -= 1000 else: for persona in range(1, contador + 1): if probabilidad(probabilidad_cura): pais.poblacion_infectada -= 1 contador = 0 def propagar_cura(self): lista = Lista() for pais in self.mundo.lista_paises: if pais.cura: if pais.aeropuerto: for elemento in pais.aeropuerto.conexiones: lista.append(elemento) for nombre in lista: for pais1 in self.mundo.lista_paises: if pais1.nombre == nombre: if not pais1.cura: pais1.cura = True def estadisticas(self): estar = True while estar: print( "\nEstadisticas:\n1 : Por pais\n2 : Situacion Mundo\n3 : Promedio muertes e infecciones\n4 : Resumen sucesos dia\n5 : Muertes e infeciones por dia\n6 : volver" ) x = input("Ingrese opcion: ") try: var = int(x) if var in [1, 2, 3, 4, 5, 6]: if var == 1: pais = input("ingrese pais: ") for elemento in self.mundo.lista_paises: if pais == elemento.nombre: print("Estado: {}".format(elemento.estatus)) print("Poblacion inicial pais: {}".format( elemento.poblacion)) print("Poblacion actual: {}".format( elemento.poblacion - elemento.poblacion_muerta)) print("Poblacion infectada: {}".format( elemento.poblacion_infectada)) print("Poblacion muerta: {}".format( elemento.poblacion_muerta)) if elemento.frontera: print("Frontera abierta") elif not elemento.frontera: print("Frontera cerrada") if elemento.cura: print("Pais posee la cura") if elemento.aeropuerto: if elemento.aeropuerto.estado: print("Aeropuerto abierto") else: print("Aeropuerto cerrado") if elemento.mascarillas: print("Gobierno entrego mascarillas") print("Propuestas: ") for propuesta in self.mundo.propuestas: if len(self.mundo.propuestas) > 0: if propuesta[1] == elemento.nombre: print(propuesta[2]) elif var == 2: validar = False while not validar: x = input( "desea ver paises limpios(1), infectados(2) o muertos(3): " ) try: var = int(x) if var in [1, 2, 3]: if var == 1: buscar = "limpio" elif var == 2: buscar = "infectado" elif var == 3: buscar = "muerto" for pais in self.mundo.lista_paises: if pais.estatus == buscar: print(pais) validar = True else: print( "opcion no valida, ingrese un numero del 1 al 3" ) except ValueError: print( "opcion no valida, ingrese un numero del 1 al 3" ) print("Poblacion mundial inicial: {}".format( self.mundo.poblacion_mundial)) print("Poblacion mundial actual: {}".format( self.mundo.poblacion_mundial_actual)) print("Poblacion mundial infectada: {}".format( self.mundo.poblacion_mundial_infectada)) print("Porcentaje de infectados: {}%".format( self.mundo.poblacion_mundial_infectada_porcen)) print("Poblacion muerta: {}".format( self.mundo.poblacion_mundial_muerta)) print("Porcentaje de muertos: {}%".format( self.mundo.poblacion_mundial_muerta_porcen)) if self.mundo.detectar: print("Infeccion detectada") print("Porcentaje de desarollo cura: {}".format( self.mundo.progreso)) elif var == 3: contador = True while contador: x = input("Tasas:\n1 : dia\n2 : acumuladas") try: var = int(x) if var in [1, 2]: if var == 1: print("Sanos hoy: {}".format( int(self.mundo. poblacion_mundial_actual) - int(self.mundo. poblacion_mundial_infectada))) print("Infectados hoy: {}".format( self.mundo.dato_infecciones)) print("Muertos hoy: {}".format( self.mundo.dato_muertes)) elif var == 2: print( "Poblacion muerta hasta la fecha: {}" .format(self.mundo. poblacion_mundial_muerta)) print( "Poblacion infectada hasta la fecha: {}" .format( self.mundo. poblacion_mundial_infectada)) contador = False except ValueError: print("Opcion incorrecta, ingrese 1 o 2") elif var == 4: print("Infectados hoy: {}".format( self.mundo.dato_infecciones)) print("Muertos hoy: {}".format( self.mundo.dato_muertes)) for pais in self.mundo.lista_paises: if pais.poblacion_infectada == 1: print("{} fue infectado".format(pais.nombre)) for lista in self.mundo.resumen: pais = lista[1] accion = lista[2] print("{} hizo la accion de: {}".format( pais, accion)) elif var == 5: for dato in self.mundo.datos_dia: print(dato) else: estar = False else: print("Error, ingrese un numero dentro de las opciones") except ValueError: print("Error, ingrese un numero") def guardar_estado(self): with open("partida_guardada.txt", "w") as archivo: txt = str(self.dia) + "\n" archivo.write(txt) txt = str(self.infeccion.tipo) + ";" txt += str(self.infeccion.contagiosidad) + ";" txt += str(self.infeccion.mortalidad) + ";" txt += str(self.infeccion.resistencia_medicina) + ";" txt += str(self.infeccion.visibilidad) + "\n" archivo.write(txt) txt = str(self.mundo.dia) + ";" txt += str(self.mundo.detectar) + ";" txt += str(self.mundo.progreso) + ";" txt += str(self.mundo.cura) + ";" txt += str(self.mundo.propuestas) + ";" txt += str(self.mundo.dato_infecciones) + ";" txt += str(self.mundo.dato_muertes) + ";" txt += str(self.mundo.resumen) + ";" txt += str(self.mundo.datos_dia) + "\n" archivo.write(txt) for pais in self.mundo.lista_paises: txt = pais.nombre + ";" txt += str(pais.poblacion) + ";" txt += str(pais.poblacion_infectada) + ";" txt += str(pais.poblacion_muerta) + ";" txt += str(pais.conexiones_tierra) + ";" if pais.aeropuerto == None: txt += None + ";" else: txt += pais.aeropuerto.nombre + ":" txt += str(pais.aeropuerto.estado) + ":" txt += str(pais.aeropuerto.conexiones) + ";" txt += str(pais.mascarillas) + ";" txt += str(pais.frontera) + ";" txt += str(pais.cura) + ";" txt += str(pais.dias_infectado) + "\n" archivo.write(txt)
def __init__(self, nombre, conexion): self.nombre = nombre self.estado = True self.conexiones = Lista() self.agregar_conexion(conexion)
class Mundo: def __init__(self): self.dia = 1 self.lista_paises = Lista() self.detectar = False self.progreso = 0 self.cura = False self.propuestas = Lista() self.dato_infecciones = 0 self.dato_muertes = 0 self.resumen = Lista() self.datos_dia = Lista() self.datos_dia.append("dia: 0, infectados: 1, muertos: 0") def buscar_cura(self, visibilidad): probabilidad_detectar = visibilidad * self.poblacion_mundial_infectada * ( self.poblacion_mundial_muerta**2) probabilidad_detectar = probabilidad_detectar / (self.poblacion_mundial **3) return probabilidad(probabilidad_detectar) def trabajar_cura(self): progreso = self.poblacion_mundial - (self.poblacion_mundial_infectada + self.poblacion_mundial_muerta) progreso = progreso / (self.poblacion_mundial * 2) self.progreso += progreso @property def poblacion_mundial(self): contador = 0 for pais in self.lista_paises: contador += pais.poblacion return contador @property def poblacion_mundial_actual(self): return self.poblacion_mundial - self.poblacion_mundial_muerta @property def poblacion_mundial_infectada(self): contador = 0 for pais in self.lista_paises: contador += pais.poblacion_infectada return contador @property def poblacion_mundial_infectada_porcen(self): contador = 0 for pais in self.lista_paises: contador += pais.poblacion_infectada return (contador / self.poblacion_mundial) * 100 @property def poblacion_mundial_muerta_porcen(self): contador = 0 for pais in self.lista_paises: contador += pais.poblacion_muerta return (contador / self.poblacion_mundial) * 100 @property def poblacion_mundial_muerta(self): contador = 0 for pais in self.lista_paises: contador += pais.poblacion_muerta return contador