def eliminar_nodos(l1): '''Elimina los nodos de una lista''' aux = l1.inicio while aux is not None: eliminar(l1, aux.info) print('Se elimino:', aux.info) aux = aux.sig
def elimina_primos(l): '''Elimina los numeros primos de una lista''' aux = l.inicio while aux is not None: if es_primo(aux.info): eliminar(l, aux.info) aux = aux.sig print('Lista sin primos') barrido_lista(l)
def comics(): '''Lista de superheroes de comics''' comic = Lista() nombre = [ 'Linterna Verde', 'Wolverine', 'Dr. Strange', 'Capitana Marvel', 'Mujer Maravilla', 'Flash', 'Star-Lord', 'Joker' ] anio = [1940, 1974, 1963, 1968, 1941, 1940, 1976, 1940] casacomic = ['DC', 'Marvel', 'DC', 'Marvel', 'DC', 'DC', 'Marvel', 'DC'] biografia = [ 'traje : color verde, arma : anillo de poder', 'poderosa capacidad de regeneracion, tres garras retractiles en cada mano', 'hechicero supremo', 'guerrera extraterrestre de la civilizacion Kree', 'princesa guerrera de las Amazonas', 'capacidad de correr, moverse y pensar extremadamente rapido', 'policia interplanetario', 'criminal mas notable de Gotham City' ] marvel, dc = 0, 0 for i in range(len(nombre)): insertar(comic, [nombre[i], anio[i], casacomic[i], biografia[i]]) barrido_lista(comic) print() aux = comic.inicio while aux is not None: dato = aux.info if dato[0] == 'Linterna Verde': eliminar(comic, aux.info) print('Se elimino:', dato[0]) if dato[0] == 'Wolverine': print(dato[0], ': aparecio en el anio', str(dato[1])) if dato[0] == 'Dr. Strange': dato[2] = 'Marvel' print(dato) if dato[3].find('traje') >= 0 or dato[3].find('armadura') >= 0: print(dato[0], 'lleva la palabra armadura/traje en su bio') if dato[1] < 1963: print('El personaje', dato[0], 'de la casa ', dato[2], 'aparecio antes del anio 1963') if dato[0] == 'Capitana Marvel' or dato[0] == 'Mujer Maravilla': print(dato[0], 'pertenece a la casa', dato[2]) if dato[0] == 'Flash' or dato[0] == 'Star-Lord': print('Info de', dato[0], ':', dato[3]) cad = dato[0] if cad[0] == 'B' or cad[0] == 'M' or cad[0] == 'S': print(dato[0], 'comienza con la letra B, M o S') if dato[2] == 'Marvel': marvel += 1 if dato[2] == 'DC': dc += 1 aux = aux.sig print('En la casa DC hay', dc, 'personajes') print('En la casa Marvel hay', marvel, 'personajes')
def quitar_ta(tabla, hash, dato, criterio=None): '''Quita elementos de una tabla abierta''' pos = hash(dato, tabla) if tabla[pos] is not None: return eliminar(tabla[pos], dato.palabra, criterio) else: return None
def anteultimo(l): '''Elimina el anteultimo nodo de una lista''' aux = l.inicio if aux is None or tamanio_lista(l) <= 1: supr = eliminar(l, aux.info) print('Se elimino:', supr) aux = aux.sig else: actual = l.inicio.sig anterior = l.inicio while actual is not None: actual = actual.sig anterior = anterior.sig if actual is None: supr = eliminar(l, aux.info) print('Se elimino:', supr) aux = aux.sig barrido_lista(l)
def aeropuerto_creta(): '''Vuelos del aeropuerto de Heraklion en Creta''' vuelos, vuelos_destinos, turista_disponible = Lista(), Lista(), Lista() monto_vuelos, vuelos_junio, lista_aux = Lista(), Lista(), Lista() nom_empr = [ 'Qatar Airways', 'Singapore Airlines', 'Fly Emirates', 'Iberia', 'Turkish Airlines' ] ciudad_dest = [ 'Atenas', 'Miconos', 'Rodas', 'Tailandia', 'Nicosia', 'Ulan Bator', 'Yakarta', 'El Brillante' ] estado = ['Ocupado', 'Desocupado'] clase = ['Primera Clase', 'Turista'] nro = 1 for i in range(len(nom_empr)): empresa = nom_empr[i] num_vuelo = randint(1000, 10000) asientos = randint(40, 80) fds = [2020, randint(1, 12), randint(1, 31)] destino = choice(ciudad_dest) kms_vuelo = randint(400, 5000) datos_avion = [empresa, num_vuelo, asientos, fds, destino, kms_vuelo] insertar(vuelos, datos_avion) for j in range(asientos): as_avion = busqueda_lista_vec(vuelos, empresa, 0) if as_avion is not None: as_nro = nro nro += 1 as_estado = choice(estado) as_clase = choice(clase) datos_asientos = [as_nro, as_estado, as_clase] insertar(as_avion.sublista, datos_asientos) print( 'EMPRESA | NUM. VUELO | ASIENTOS | FECHA DE SALIDA | DESTINO | KMS. VUELO' ) barrido_lista(vuelos) print() aux = vuelos.inicio km = aux.info[5] monto_turista, monto_pc = 0, 0 while aux is not None: print('Datos de asientos:', aux.info[0]) print('Cantidad de asientos:', tamanio_lista(aux.sublista)) # print('ASIENTOS TOTALES | ESTADO | CLASE') # barrido_sublista(aux.sublista) print() # a if aux.info[4] == 'Atenas' or aux.info[4] == 'Miconos' or aux.info[ 4] == 'Rodas': insertar(vuelos_destinos, aux.info) # d # vuelos disponibles desde junio en adelante if aux.info[3][1] >= 6: insertar(vuelos_junio, aux.info) # b avion = aux.sublista.inicio while avion is not None: if avion.info[1] == 'Desocupado' and avion.info[2] == 'Turista': insertar(turista_disponible, aux.info) break # c if avion.info[1] == 'Ocupado': if avion.info[2] == 'Turista': monto_turista += (75 * km) else: monto_pc += (203 * km) avion = avion.sig montos = [aux.info[0], aux.info[1], monto_turista, monto_pc] insertar(monto_vuelos, montos) aux = aux.sig # e nro_vuelo = int(input('Ingrese el numero de vuelo: ')) nro_as = int(input('Ingrese el numero del asiento: ')) clase = input('Ingrese la clase: ') estado_asiento = 'Ocupado' datos_venta_pasaje = [nro_as, estado_asiento, clase] pos = busqueda_lista_vec(vuelos, nro_vuelo, 1) if pos is None: print('El vuelo no existe') else: aux = vuelos.inicio insertar(as_avion.sublista, datos_venta_pasaje) print('**** Se ha vendido el pasaje ****') print('N°Vuelo | N°Asiento | Clase') print(datos_venta_pasaje) print() aux = aux.sig # f eliminar_vuelo = int( input('Ingrese el numero de vuelo que desea eliminar: ')) pos = busqueda_lista_vec(vuelos, eliminar_vuelo, 1) if pos is None: print('El vuelo no existe') else: aux = vuelos.inicio eliminar(vuelos, eliminar_vuelo, 1) lista_aux = as_avion.sublista print('Vuelo eliminado') aux = aux.sig print() print('Vuelos con destino a Atenas, Miconos o Rodas:') barrido_lista(vuelos_destinos) print() print('Vuelos con asientos clase turista disponible:') barrido_lista(turista_disponible) print() print( 'Recaudado por cada vuelo, turista $75 x km y primera clase $203 x km') print('EMPRESA | NUM. VUELO | $ TURISTA | $ PRIMERA CLASE') barrido_lista(monto_vuelos) print() print('Vuelos disponibles entre junio y diciembre:') barrido_lista(vuelos_junio) print() print('Se elimino el vuelo', eliminar_vuelo) print('Pasajeros del vuelo eliminado:') barrido_lista(lista_aux) print()
def vocales(l): '''Elimina las vocales de una lista''' dato = None dato = eliminar(l, 'A') while dato is not None: dato = eliminar(l, 'A') dato = eliminar(l, 'a') while dato is not None: dato = eliminar(l, 'a') dato = eliminar(l, 'E') while dato is not None: dato = eliminar(l, 'E') dato = eliminar(l, 'e') while dato is not None: dato = eliminar(l, 'e') dato = eliminar(l, 'I') while dato is not None: dato = eliminar(l, 'I') dato = eliminar(l, 'i') while dato is not None: dato = eliminar(l, 'i') dato = eliminar(l, 'O') while dato is not None: dato = eliminar(l, 'O') dato = eliminar(l, 'o') while dato is not None: dato = eliminar(l, 'o') dato = eliminar(l, 'U') while dato is not None: dato = eliminar(l, 'U') dato = eliminar(l, 'u') while dato is not None: dato = eliminar(l, 'u') print('Cola sin vocales') barrido_lista(l)
def saga_starwars(): lista = Lista() datos = Personaje('Darth Vader', 2.03, 37, 'M', 'Humano', 'Polis Massa', [3, 4, 5, 6]) insertar(lista, datos, 'nombre') datos = Personaje('Han Solo', 1.85, 66, 'M', 'Humano', 'Corellia', [1, 2, 3, 4, 5, 6, 7, 8]) insertar(lista, datos, 'nombre') datos = Personaje('R2D2', 1.09, 67, 'M', 'Droide', 'Naboo', [1, 2, 3, 4, 5, 6, 7, 8, 9]) insertar(lista, datos, 'nombre') datos = Personaje('C3PO', 1.75, 54, 'M', 'Droide', 'Tatooine', [1, 2, 3, 4, 5, 6, 7, 8, 9]) insertar(lista, datos, 'nombre') datos = Personaje('Yoda', 0.66, 900, 'M', 'Yoda', 'Desconocido', [1, 2, 3, 4, 5, 6, 7, 8, 9]) insertar(lista, datos, 'nombre') datos = Personaje('Rey Skywalker', 1.70, 20, 'F', 'Humano', 'Jakku', [7, 8, 9]) insertar(lista, datos, 'nombre') datos = Personaje('Chewbacca', 2.30, 140, 'M', 'Wookiee', 'Kashyyyk', [1, 2, 3, 4, 5, 6, 7, 8, 9]) insertar(lista, datos, 'nombre') datos = Personaje('Breha Organa', 1.63, 38, 'F', 'Humano', 'Alderaan', [1, 2, 3, 4, 5, 6, 7, 8, 9]) insertar(lista, datos, 'nombre') print( 'NOMBRE | ALTURA | EDAD | GENERO | ESPECIE | PLANETA NATAL | APARICIONES' ) barrido_lista(lista) print() # a aux = lista.inicio while aux is not None: if aux.info.genero == 'F': print(aux.info.nombre, 'personaje femenino') aux = aux.sig print() # b aux = lista.inicio while aux is not None: if aux.info.especie == 'Droide' and len(aux.info.episodios) >= 6: print(aux.info.nombre, 'es un droide') aux = aux.sig print() # c aux = lista.inicio while aux is not None: if aux.info.nombre == 'Darth Vader' or aux.info.nombre == 'Han Solo': print('NOMBRE:', aux.info.nombre) print('ALTURA:', aux.info.altura) print('EDAD:', aux.info.edad) print('GENERO:', aux.info.genero) print('ESPECIE:', aux.info.especie) print('PLANETA NATAL:', aux.info.planeta_natal) print('APARICIONES:', aux.info.episodios) print() aux = aux.sig print() # d aux = lista.inicio while aux is not None: aux = aux.sig if 4 in aux.info.episodios and 5 in aux.info.episodios and 6 in aux.info.episodios and 7 in aux.info.episodios: print(aux.info.nombre, 'aparece en al menos un episodio desde el IV al VII') aux = aux.sig print() # e mayor = 0 aux = lista.inicio while aux is not None: if aux.info.edad >= 850 and aux.info.edad > mayor: print(aux.info.nombre, 'tiene mas de 850 anios') info = aux.info mayor = aux.info.edad aux = aux.sig print(info.nombre, 'es el personaje mas antiguo, con', info.edad, 'anios') print() # g aux = lista.inicio while aux is not None: if aux.info.planeta_natal == 'Alderaan': print(aux.info.nombre, 'pertenece a Alderaan') aux = aux.sig print() # h aux = lista.inicio while aux is not None: if aux.info.altura < 0.70: print(aux.info.nombre, 'mide menos de 70 centimetros') aux = aux.sig print() # i (inc) aux = lista.inicio while aux is not None: if aux.info.nombre == 'Chewbacca': print('NOMBRE:', aux.info.nombre) print('ALTURA:', aux.info.altura) print('EDAD:', aux.info.edad) print('GENERO:', aux.info.genero) print('ESPECIE:', aux.info.especie) print('PLANETA NATAL:', aux.info.planeta_natal) print('APARICIONES:', aux.info.episodios) print() aux = aux.sig print() # f aux = lista.inicio while aux is not None: if 4 in aux.info.episodios and 5 in aux.info.episodios and 6 in aux.info.episodios and len( aux.info.episodios) == 3: elim = eliminar(lista, aux.info) print('Eliminado:', elim.nombre) aux = aux.sig print()