def hoy(): # 1 if datos.leerArchivo(ARCHIVO_DIA): diaHoy = datos.leerArchivo(ARCHIVO_DIA)['dia'][0]['hoy'] # 1.1 return diaHoy # 1.2 # 2 else: diaPorDefecto = { 'hoy': DIA_INICIAL, # 2.1 } datos.guardarEnArchivo(ARCHIVO_DIA, diaPorDefecto) # 2.2 diaHoy = datos.leerArchivo(ARCHIVO_DIA)['dia'][0]['hoy'] # 2.3 return diaHoy # 2.4
def __anadirCohete(): # 1 print('Has seleccionado añadir un cohete de un modelo nuevo') idTipo = input('¿Cual es el nombre (identificador) del modelo?: ') while len(idTipo) < 3: # 1.1 input('La palabra debe tener por lo menos 3 caracteres: ') # 2 if datos.leerArchivo(ARCHIVO_COHETES): # 2.1 listaCohetes = listarLosCohetes() # 2.2 for cohete in listaCohetes: # 2.3 if idTipo == cohete['idTipo']: print( 'Ya existe un tipo de cohete con esa identificacion', 'por lo que no se han agregado datos', sep='\n') return # 2.3.1 # 3 cargaUtil = int(input('¿Cual es la carga util de este tipo de cohete? (en Kg): ')) # 4 while cargaUtil < 0: print('Ese numero es negativo y... llevar carga negativa es dificil') cargaUtil = int(input('Escribe de nuevo la carga util, por favor: ')) # 5 nuevoCohete = { 'idTipo': idTipo, 'cargaUtil': cargaUtil, 'cantidad': 1, # 5.1 } # 6 datos.guardarEnArchivo(ARCHIVO_COHETES, nuevoCohete) print('')
def __actualizarDia(diaNuevo): # 1 dicDiaAnterior = datos.leerArchivo(ARCHIVO_DIA)['dia'][0] datos.eliminarDeArchivo(ARCHIVO_DIA, dicDiaAnterior) # 2 dicDiaNuevo = {'hoy': diaNuevo} datos.guardarEnArchivo(ARCHIVO_DIA, dicDiaNuevo)
def __anadirPeticion(): # 1 print('Has seleccionado realizar una nueva peticion.') idPeticion = input('Ingresa el identificador unico de tu peticion: ') while len(idPeticion) < 3: # 1.1 idPeticion = input('La palabra debe tener por lo menos 3 caracteres: ') # 2 if datos.leerArchivo(ARCHIVO_PETICIONES): # 2.1 listaPeticiones = listarLasPeticiones() # 2.2 for peticion in listaPeticiones: # 2.3 if idPeticion == peticion['idPeticion']: print('Ya existe una peticion con esa identificacion', 'por lo que no se han agregado datos', sep='\n') return # 2.3.1 # 3 descripcion = input('Escribe la descripcion de la peticion: ') # 4 peso = float(input('Introduce el peso en Kg (hasta 3 decimales): ')) # 5 while peso < 0: print('Ese numero es negativo y... llevar carga negativa es dificil') peso = float(input('Escribe de nuevo el peso, por favor: ')) # 6 peso = round(peso, 3) # 7 maxDias = int( input('Escribe el numero maximo de dias que debe tardar en llegar: ')) # 8 while peso < 0: print('Ese numero es negativo y... ¿dias negativos?') peso = float(input('Escribe de nuevo los dias, por favor: ')) # 9 nuevaPeticion = { 'idPeticion': idPeticion, 'descripcion': descripcion, 'peso': peso, 'maxDias': maxDias, 'diaPeticion': dias.hoy(), 'lanzamientoAsignado': 'sin asignar', } # 10 datos.guardarEnArchivo(ARCHIVO_PETICIONES, nuevaPeticion) print('')
def mostrarPeticiones(): # 1 if not datos.leerArchivo(ARCHIVO_PETICIONES): print('Todavia no hay peticiones registradas') return # 2 listaPeticiones = listarLasPeticiones() listaPeticiones = datos.ordenarLista(listaPeticiones, 'idPeticion') for peticion in listaPeticiones: print(peticion['idPeticion'], peticion['descripcion'], 'peso', peticion['peso'], 'Kg', 'maxDias', peticion['maxDias']) print('')
def __menuCohetes(): # 1 print( 'Has seleccionado la opcion de añadir cohetes.', 'Selecciona el modelo de cohete que deseas añadir:', '1. Nuevo tipo de cohete', sep='\n') # 2 if not datos.leerArchivo(ARCHIVO_COHETES): datos.crearArchivo(ARCHIVO_COHETES) # 3 dicOpciones = mostrarCohetes() # 4 __usarEleccion(dicOpciones)
def mostrarInfoCohetes(): # 1 if not datos.leerArchivo(cohetes.ARCHIVO_COHETES): print('No hay cohetes registrados') return # 2 print('En el hangar quedan estos cohetes sin asignar lanzamiento:') listaCohetes = cohetes.listarLosCohetes() for cohete in listaCohetes: print( cohete['idTipo'], 'Carga util:', cohete['cargaUtil'], 'Kg', 'Cantidad:', cohete['cantidad'], )
def mostrarInfoPeticiones(): # 1 if not datos.leerArchivo(peticiones.ARCHIVO_PETICIONES): print('No hay peticiones registradas') return # 2 listaPeticiones = peticiones.listarLasPeticiones() for peticion in listaPeticiones: print( peticion['idPeticion'], peticion['descripcion'], 'Peso:', peticion['peso'], 'Kg', 'Dia Limite: dia', peticion['maxDias'] + peticion['diaPeticion'], 'Lanzamiento Asignado:', peticion['lanzamientoAsignado'] )
def mostrarEstadoLanzamientos(): # 1 if not datos.leerArchivo(lanzamientos.ARCHIVO_LANZAMIENTOS): print('No hay lanzamientos registrados') return # 2 listaLanzamientos = lanzamientos.listarLosLanzamientos() for lanzamiento in listaLanzamientos: # 2.1 if lanzamiento['diaLanzamiento'] == 'sin asignar': print( lanzamiento['idLanzamiento'], 'sin dia de lanzamiento asignado' ) # 2.2 else: diaSale = lanzamiento['diaLanzamiento'] diaLlega = lanzamiento['diasTarda'] + diaSale if dias.hoy() < diaSale: print( lanzamiento['idLanzamiento'], 'preparando motores', ) print( 'Despegara dia', diaSale, 'y llegara dia', diaLlega ) elif dias.hoy() == diaSale: print( lanzamiento['idLanzamiento'], 'despega hoy mismo', ) print( 'Llegara dia', diaLlega ) elif dias.hoy() > diaSale and dias.hoy() < diaLlega: print( lanzamiento['idLanzamiento'], 'en ruta a la estacion', ) print( 'Despego dia', diaSale, 'y llegara dia', diaLlega ) elif dias.hoy() == diaLlega: print( lanzamiento['idLanzamiento'], 'ha llegado hoy mismo', ) print( 'Despego dia', diaSale, ) elif dias.hoy() > diaLlega: print( lanzamiento['idLanzamiento'], 'ya esta en la estacion', ) print( 'Despego dia', diaSale, 'y llego dia', diaLlega )
def listarLosCohetes(): # 1 return datos.leerArchivo(ARCHIVO_COHETES)['cohetes']
def listarLasPeticiones(): # 1 return datos.leerArchivo(ARCHIVO_PETICIONES)['peticiones']
def __asignar(diasParaLanzamiento = 0): # 1 if not datos.leerArchivo(peticiones.ARCHIVO_PETICIONES): print('No hay peticiones registradas') return if not datos.leerArchivo(lanzamientos.ARCHIVO_LANZAMIENTOS): print('No hay lanzamientos registrados') return listaPeticiones = peticiones.listarLasPeticiones() listaLanzamientos = lanzamientos.listarLosLanzamientos() # 2 diaDeLanzamiento = dias.hoy() + diasParaLanzamiento for lanzamiento in listaLanzamientos: if lanzamiento['diaLanzamiento'] == 'sin asignar': # 2.1 datos.eliminarDeArchivo(lanzamientos.ARCHIVO_LANZAMIENTOS, lanzamiento) lanzamiento['diaLanzamiento'] = diaDeLanzamiento datos.guardarEnArchivo(lanzamientos.ARCHIVO_LANZAMIENTOS, lanzamiento) diaQueLlega = lanzamiento['diaLanzamiento'] + lanzamiento['diasTarda'] lanzamiento['diaQueLlega'] = diaQueLlega # 2.2 # 4 for peticion in listaPeticiones: diaQueDebeLlegar = peticion['maxDias'] + peticion['diaPeticion'] peticion['diaQueDebeLlegar'] = diaQueDebeLlegar # 4.1 # 5 listaPeticiones = datos.ordenarLista(listaPeticiones, 'diaQueDebeLlegar') listaLanzamientos = datos.ordenarLista(listaLanzamientos, 'diaQueLlega') # 6 for lanzamiento in listaLanzamientos: # 6.0 if lanzamiento['diaLanzamiento'] < dias.hoy(): continue # 6.1 lanzamiento['cargaQueCabe'] = __hallarCargaQueCabe(lanzamiento) diaQueLlega = lanzamiento['diaQueLlega'] # 6.2 for peticion in listaPeticiones: # 6.2.1 if peticion['lanzamientoAsignado'] == 'sin asignar': # 6.2.2 if peticion['diaQueDebeLlegar'] >= diaQueLlega: lanzamiento['cargaQueCabe'] -= peticion['peso'] # 6.2.3 if lanzamiento['cargaQueCabe'] < 0: # 6.2.4 lanzamiento['cargaQueCabe'] += peticion['peso'] else: # 6.2.5 peticion.pop('diaQueDebeLlegar') datos.eliminarDeArchivo(peticiones.ARCHIVO_PETICIONES, peticion) peticion['lanzamientoAsignado'] = lanzamiento['idLanzamiento'] datos.guardarEnArchivo(peticiones.ARCHIVO_PETICIONES, peticion) print( peticion['idPeticion'], 'ha sido asignada en', lanzamiento['idLanzamiento'], '\n Llegara en ', diaQueLlega - dias.hoy(), 'dias', ) # 7 haySinAsignar = False for peticion in listaPeticiones: if peticion['lanzamientoAsignado'] == 'sin asignar': haySinAsignar = True # 7.1 if peticion['diaQueDebeLlegar'] < dias.hoy(): print( 'La peticion', peticion['idPeticion'], 'ha caducado porque ya tendria que haber llegado...', '\n El dia maximo para llegar era dia', peticion['diaQueDebeLlegar'], ) else: print( 'Ha sido imposible asignar la peticion', peticion['idPeticion'], 'o no cabe o no llegaria a tiempo', ) if not haySinAsignar: print('No hay peticiones sin lanzamiento asignado') print('')