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 cambiarCantidadCohete(coheteAnterior, suma = 1): # 1 coheteNuevo = coheteAnterior.copy() # 2 coheteNuevo['cantidad'] = coheteAnterior['cantidad'] + suma # 3 if coheteNuevo['cantidad'] < 0: return False # 4 datos.eliminarDeArchivo(ARCHIVO_COHETES, coheteAnterior) datos.guardarEnArchivo(ARCHIVO_COHETES, coheteNuevo)
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 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 __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('')