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')
Exemple #4
0
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()