예제 #1
0
 def eliminarNodos(l1):
     aux = l1.inicio
     while (aux is not None):
         eliminar(l1, aux.info)
         aux = aux.sig
     print('Lista vacia')
     barridoLista(l1)
예제 #2
0
def numeros_primos(l):
    aux = l.inicio
    while (aux is not None):
        if identificar_primos(aux.info):
            eliminar(l, aux.info)
        aux = aux.sig
    print('Lista sin primos')
    barridoLista(l)
예제 #3
0
def eliminar_vocales(lista):
    aux = lista.inicio
    while aux is not None:
        if aux.info == 'a' or aux.info == 'e' or aux.info == 'i' or aux.info == 'o' or aux.info == 'u' or aux.info == 'A' or aux.info == 'I' or aux.info == 'E' or aux.info == 'O' or aux.info == 'U':
            eliminar(lista, aux.info)
        aux = aux.sig
    print('La lista sin vocales es : ')
    barrido_lista(lista)
예제 #4
0
def local_informatica(lista_stock, lista_proveedores):
    lista_disco_solido = Lista()
    lista_teclado_inalambrico = Lista()
    lista_aux = Lista()
    lista_aux1 = Lista()
    aux_proveedores = lista_proveedores.inicio
    aux_stock = lista_stock.inicio
    while (aux_proveedores is not None):
        encontrado = False
        while (aux_stock is not None) and (encontrado is False):
            if (aux_proveedores.info[0] == aux_stock.info[0]):
                aux_stock.info[5] = aux_stock.info[5] + aux_proveedores.info[5]
                encontrado = True
            aux_stock = aux_stock.sig
        if encontrado is False:
            insertar(lista_stock, aux_proveedores.info)
        aux_proveedores = aux_proveedores.sig
    aux_stock = lista_stock.inicio
    while (aux_stock is not None):
        if (aux_stock.info[1] == 'Pendrive') and (aux_stock.info[2]
                                                  == 'Kingston'):
            eliminar(lista_stock, aux_stock.info)
        if (aux_stock.info[1] == 'Disco solido'):
            insertar(lista_disco_solido, aux_stock.info)
        elif aux_stock.info[1] == 'Teclado inalambrico':
            insertar(lista_teclado_inalambrico, aux_stock.info)
        aux_stock = aux_stock.sig

    aux_disco_solido = lista_disco_solido.inicio
    aux_teclado_inalambrico = lista_teclado_inalambrico.inicio
    costo_disco_solido = 0
    costo_teclado_inalambrico = 0
    while (aux_disco_solido is not None) or (aux_teclado_inalambrico
                                             is not None):
        costo_disco_solido = costo_disco_solido + (aux_disco_solido.info[4] *
                                                   aux_disco_solido.info[5])
        costo_teclado_inalambrico = costo_teclado_inalambrico + (
            aux_teclado_inalambrico.info[4] * aux_teclado_inalambrico.info[5])
        aux_disco_solido = aux_disco_solido.sig
        aux_teclado_inalambrico = aux_teclado_inalambrico.sig

    aux_stock = lista_stock.inicio
    while (aux_stock is not None):
        insertar(lista_aux, aux_stock.info, 1)
        insertar(lista_aux1, aux_stock.info, 2)
        aux_stock = aux_stock.sig
    print('------------------------------------------------------------')
    print("Listado ordenado por tipo: ")
    barridoLista(lista_aux)
    print('------------------------------------------------------------')
    print("Listado ordenado por marca: ")
    barridoLista(lista_aux1)
    print('------------------------------------------------------------')
    print('Costo de existencia del disco solido: ', costo_disco_solido)
    print('Costo de existencia del teclado inalambrico: ',
          costo_teclado_inalambrico)
    print('------------------------------------------------------------')
    barridoLista(lista_stock)
예제 #5
0
def eliminiar_nodo(comic):
    aux = comic.inicio
    while aux is not None:
        dato = aux.info
        if dato[0] == 'Linterna Verde':
            eliminar(comic, aux.info)
        aux = aux.sig
    print('Lista sin linterna verde: ' )
    barrido_lista(comic)
예제 #6
0
def eliminar_vocales(l):
    aux = l.inicio
    while (aux is not None):
        if ord(aux.info.lower()) == 97 or ord(aux.info.lower()) == 101 or ord(
                aux.info.lower()) == 105 or ord(
                    aux.info.lower()) == 111 or ord(aux.info.lower()) == 117:
            eliminar(l, aux.info)
            print('Se elimino', aux.info)
        aux = aux.sig
    barridoLista(l)
예제 #7
0
def NumerosPrimos(lista):
    aux = lista.inicio
    while (aux is not None):
        control = False
        for e in range(2, aux.info):
            if (aux.info % e == 0):
                control = True
        if control == True:
            eliminar(lista, aux.info)
        control = False
        aux = aux.sig
예제 #8
0
def eliminar_primos(lista):
    aux = lista.inicio
    while aux is not None:
        cd= 0        
        for i in range (1, aux.info):
            if aux.info % i == 0:
                cd += 1
        if cd < 2:
            eliminar(lista, aux.info)
        aux = aux.sig
    print('Lista sin primos: ')
    barrido_lista(lista)
예제 #9
0
def separa_pares(l):
    lista_pares = Lista()
    aux = l.inicio
    while (aux is not None):
        if (aux.info % 2) == 0:
            insertar(lista_pares, aux.info)
            eliminar(l, aux.info)
        aux = aux.sig
    print('Lista de pares: ')
    barridoLista(lista_pares)
    print('Lista de impares')
    barridoLista(l)
예제 #10
0
def dividir_lista(lista):
    aux = lista.inicio
    lista_par = Lista()
    while aux is not None: 
        if aux.info % 2 == 0 :
            insertar(lista_par, aux.info)
            eliminar(lista,aux.info)
        aux = aux.sig
    print('Lista par es :')
    barrido_lista(lista_par)
    print('la lista de impares es: ')
    barrido_lista(lista)
예제 #11
0
def elim_el(lista):
    print('LISTA:')
    barrido_lista(lista)
    aux = lista.inicio
    i = 0
    while aux != None:
        if (i == tamanio_lista(lista)-1) :
            eliminar(lista,aux.info)
            print('')
        i+=1
        aux = aux.sig
    print('Lista sin anteultimo nodo:')
    barrido_lista(lista)
예제 #12
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
예제 #13
0
def superheroes(l):
    aux = l.inicio
    while (aux is not None):
        dato = aux.info
        if dato[0] == "Linterna Verde":
            eliminar(l, aux.info)
        if dato[0] == "Wolverine":
            print('Anio de aparicion de Wolverine: ', dato[1])
        if dato[0] == "Ant-Man":
            aux.info[3] = "Marvel"
        if dato[3].find("traje") >= 0 or dato[3].find("armadura") >= 0:
            print('Nombre: ', dato[0])
        if dato[1] < 1963:
            print('Nombre: ', dato[0])
            print('Casa: ', dato[2])
        aux = aux.sig
예제 #14
0
def eliminar_vuelo(listaVuelos, numeroVuelo):
	eliminado = li.eliminar(listaVuelos, numeroVuelo, 'numeroVuelo')

	if eliminado is not None:
		print(f"Cantidad de dinero a devolver: ${recaudacion(eliminado.info)}")
		return recaudacion(eliminado.info)
	else:
		print("No se encontro el vuelo.")
예제 #15
0
def eliminarVocales(lista):
    aux = eliminar(lista, "a")
    while (aux is not None):
        aux = eliminar(lista, "a")

    aux = eliminar(lista, "e")
    while (aux is not None):
        aux = eliminar(lista, "e")

    aux = eliminar(lista, "i")
    while (aux is not None):
        aux = eliminar(lista, "i")

    aux = eliminar(lista, "o")
    while (aux is not None):
        aux = eliminar(lista, "o")

    aux = eliminar(lista, "u")
    while (aux is not None):
        aux = eliminar(lista, "u")
예제 #16
0
def vuelos(l):
    aux = l.inicio
    listado_atenas = Lista()
    turista_libre = Lista()
    totales_vuelos = Lista()
    programados = Lista()
    lista_aux = Lista()
    fecha = input('Ingrese la fecha para consultar vuelos: ')
    while (aux is not None):
        if aux.info[5] == 'Atenas':
            insertar(listado_atenas, aux.info)
        aux_lista_asientos = aux.info[7].inicio
        km = aux.info[6]
        total = 0
        while (aux_lista_asientos is not None):
            if aux_lista_asientos.info[2] == 'Desocupado':
                if aux_lista_asientos.info[1] == 'Turista':
                    insertar(turista_libre, aux.info)
                    break
            if aux_lista_asientos.info[2] == 'Ocupado':
                if aux_lista_asientos.info[1] == 'Turista':
                    total = total + (350 * km)
                else:
                    total = total + (988 * km)
            aux_lista_asientos = aux_lista_asientos.sig
        datos = [aux.info[1], total]
        insertar(totales_vuelos, datos)
        if aux.info[3] == fecha:
            insertar(programados, aux.info)
        aux = aux.sig
    nro_vuelo = int(input('Ingrese el numero de vuelo: '))
    nro = int(input('Ingrese el numero del asiento: '))
    clase = input('Ingrese la clase: ')
    estado_asiento = 'Ocupado'
    persona = input('Ingrese el nombre de la persona')
    datos_venta_pasaje = [nro, clase, estado_asiento, persona]
    pos = busquedaLista(l, nro_vuelo, 1)
    if pos == -1:
        print('El vuelo no existe')
    else:
        aux = l.inicio
        if pos == 0:
            insertar(aux.info[7], datos_venta_pasaje)
            print('Pasaje vendido')
        else:
            for i in range(0, pos + 1):
                aux = aux.sig
            insertar(aux.info[7], datos_venta_pasaje)
            print('Pasaje vendido')
    vuelo_eliminar = int(
        input('Ingrese el numerod de vuelo que desea eliminar: '))
    pos = busquedaLista(l, vuelo_eliminar, 1)
    if pos == -1:
        print('El vuelo no existe')
    else:
        aux = l.inicio
        if pos == 0:
            lista_aux = aux.info[7]
        else:
            for i in range(0, pos + 1):
                aux = aux.sig
            lista_aux = aux.info[7]
        eliminar(l, vuelo_eliminar, 1)
    print('Vuelos programados para la fecha ', fecha, ' :')
    barridoLista(programados)
    print('Vuelos con destino a Atenas: ')
    barridoLista(listado_atenas)
    print('Vuelos con asientos de clase turista disponibles: ')
    barridoLista(turista_libre)
    print('Total recaudado por cada vuelo: ')
    barridoLista(totales_vuelos)
    print('Se elimino el vuelo ', vuelo_eliminar, '. Listado de pasajeros: ')
    barridoLista(lista_aux)
예제 #17
0
def quitar_ta(tabla, hash, dato, criterio=None):
    posicion = hash(dato, tabla)
    if (tabla[posicion] is not None):
        return eliminar(tabla[posicion], dato.palabra, criterio)
    else:
        return None
예제 #18
0
        print(aux.info)
    aux = aux.sig

# Separar en dos listas los pares y los impares

lista_uno = Lista()
lista_par = Lista()
lista_impar = Lista()

for i in range(30):
    insertar(lista_uno, randint(0, 50))

#barrido(lista)

while (not lista_vacia(lista_uno)):
    dato = eliminar(lista_uno, lista_uno.inicio.info)
    if (dato % 2 == 0):
        insertar(lista_par, dato)
    else:
        insertar(lista_impar, dato)

print("Par ")
barrido(lista_par)
print("Impar ")
barrido(lista_impar)

# Otra forma de separar en pares e impares.

lista2 = Lista()
lista_par2 = Lista()
lista_impar2 = Lista()
예제 #19
0
        self.dni = dni

    def __str__(self):
        return self.apellido + " " + self.nombre + " " + str(self.dni)


# persona = Persona('acosta', 'juan', 33)
# dic = persona.__dict__
# print('nombre' in dic)

lista = Lista()

persona = Persona('acosta', 'juan', 33)
insertar(lista, persona, 'apellido')
persona = Persona('perez', 'martin', 35)
insertar(lista, persona, 'apellido')
persona = Persona('perez', 'jorge', 36)
insertar(lista, persona, 'apellido')
persona = Persona('bonato', 'ana', 34)
insertar(lista, persona, 'apellido')

barrido(lista)

#perez martin
persona1 = eliminar(lista, 80, 'dni')

print('dato eliminado', persona1)
barrido(lista)

pos = busqueda(lista, 'perez', 'nombre')
print(pos.info)
예제 #20
0
from tda_lista import Lista, insertar, eliminar, busqueda, barrido, lista_vacia
from random import randint

lista = Lista()

for i in range(100):
    insertar(lista, chr(randint(65, 90)))

barrido(lista)

dato = eliminar(lista, 'A')
while (dato is not None):
    dato = eliminar(lista, 'A')

dato = eliminar(lista, 'E')
while (dato is not None):
    dato = eliminar(lista, 'E')

dato = eliminar(lista, 'I')
while (dato is not None):
    dato = eliminar(lista, 'I')

dato = eliminar(lista, 'O')
while (dato is not None):
    dato = eliminar(lista, 'O')

dato = eliminar(lista, 'U')
while (dato is not None):
    dato = eliminar(lista, 'U')
print()
barrido(lista)
        c.arribo(colaGuardianes, nPersonaje.info)
    nPersonaje = nPersonaje.sig

print(colaGuardianes.tamanio)

#D
listaAnio = li.Lista()

nPersonaje = listaPersonajes.inicio
while nPersonaje is not None:
    if nPersonaje.info.anio > 1960 and nPersonaje.info.nombre_p != "":
        li.insertar(listaAnio, nPersonaje, 'nombre_s')
    nPersonaje = nPersonaje.sig

#E
if li.eliminar(listaPersonajes, "Vlanck Widow", 'nombre_s'):
    li.insertar(
        listaPersonajes,
        Personaje("Black Widow", 1961, "asd", "Guardianes de la galaxia"),
        'nombre_s')


#Ejercicio 3
#A
def bernstein_libro(dato, tabla):
    """Función hash de Bernstein para cadenas."""
    h = 0
    for caracter in dato.titulo:
        h = h * 33 + ord(caracter)
    return h % len(tabla)
예제 #22
0
def aeropuertos(lista):
    for i in range(len(destinos)):
        num_v = i+1
        d = randint(1,30)
        m = randint(1,12)
        a = randint(2020,2021)
        fecha = [d,m,a]
        kms = choice(km)
        cant = choice(asientos)
        dato = Vuelo(choice(empresas),num_v,cant,fecha,destinos[i],kms)
        insertar(lista,dato,'destino')
    aux = lista.inicio
    while aux != None:
        cant = aux.info.c_asientos
        p = cant//1.5
        precio = 0
        for i in range(cant):
            asiento = i+1
            ocupado = choice(tru)
            if asiento < p:
                clase = 'Turista'
                precio = (75*kms)
            else:
                clase = 'Primera'
                precio = (203*kms)
            dato = Asiento(asiento,ocupado,clase,precio)
            insertar(aux.sublista,dato,'numero')
        aux = aux.sig
    # A
    aux = lista.inicio
    while not aux == None:
        if aux.info.destino == 'Atenas':
            print('Destino a Atenas: ')
            print(aux.info)
        if aux.info.destino == 'Miconos':
            print('Destino a Miconos: ')
            print(aux.info)
        if aux.info.destino == 'Rodas':
            print('Destino a Rodas: ')
            print(aux.info)
        aux = aux.sig
    print('')
    # B
    aux = lista.inicio
    while not aux == None:
        print()
        s_n = input('Desea ver los asientos libres de la clase turista del destino '+ aux.info.destino + ': ')
        if (s_n == 'S') or (s_n == 's'):
            pos = aux.sublista.inicio
            while not pos == None:
                if pos.info.clase == 'Turista' and pos.info.ocupado == False:
                    print('El asiento '+ str(pos.info.numero) + ' esta desocupado')
                pos = pos.sig
        aux = aux.sig
    # C
    print()
    print('Total recaudado por cada vuelo')
    aux = lista.inicio
    while not aux == None:
        recaudado = 0
        pos = aux.sublista.inicio
        while pos != None:
            if pos.info.ocupado == True:
                recaudado += pos.info.precio
            pos = pos.sig
        print('El vuelo nro '+str(aux.info.num_v)+', a '+ aux.info.destino +' recaudo: '+ str(recaudado)+ ' dinero.')
        aux = aux.sig
    print()
    # E
    s_n = None
    while (s_n != 'n') and (s_n != 'N'):
        s_n = input('Quiere comprar un nuevo pasaje? S/N: ')
        if (s_n == 'S') or (s_n == 's'):
            destino = input('Indique su destino: ')
            bus = None
            bus = busqueda_lista(lista,destino,'destino')
            if bus != None:
                compra = False
                while compra == False:
                    pas = int(input('Elija numero de pasaje: (1/'+ str(bus.info.c_asientos) +') : '))
                    pos = bus.sublista.inicio
                    while pos != None:
                        if pos.info.numero == pas:
                            if pos.info.ocupado == False:
                                pos.info.ocupado = True
                                print('Compra de pasaje exitosa.')
                                print()
                                compra = True
                                break
                            else:
                                print('Lo siento, ese pasaje esta ocupado.')
                                print()
                                break
                        pos = pos.sig
    # F
    print()
    elim = None
    while (elim != 'n') and (elim != 'N'):
        elim = input('Desea eliminar algun vuelo? S/N: ')
        if (elim == 's') or (elim == 'S'):
            vuelo = int(input('Indique con numero, el Nro de vuelo a eliminar: '))
            bus = None
            bus = busqueda_lista(lista,vuelo,'num_v')
            if bus != None:
                b = input('- Seguro que desea eliminar el vuelo con destino a '+ bus.info.destino+' ? S/N: ')
                if (b == 's') or (b == 'S'):
                    eliminar(lista,bus.info.num_v,'num_v')
                    print('>>> Se ha eliminado el vuelo Nro: '+str(bus.info.num_v)+', con destino a '+ bus.info.destino )
                    pos= bus.sublista.inicio
                    recaudado = 0
                    while pos != None:
                        if pos.info.ocupado == True:
                            recaudado += pos.info.precio
                        pos = pos.sig
                    print('>>> La cantidad de dinero a devolver es igual a: ' + str(recaudado))
                    print()
    # G
    print()
    print('Empresas y kilómetros de vuelos con destino a Tailandia:')
    aux = lista.inicio
    while aux != None:
        if aux.info.destino == 'Tailandia':
            print('__ La empresa '+aux.info.empresa + ' tiene un viaje a Tailandia de '+str(aux.info.kms)+' KMs.')
        aux = aux.sig
예제 #23
0
    pos = aux.sublista.inicio
    c = 0
    n = 0
    while pos != None:
        if pos.info.episodio == 4:
            c += 1
        elif pos.info.episodio == 5:
            c += 1
        elif pos.info.episodio == 6:
            c += 1
        else:
            n += 1
            break
        pos = pos.sig
    if (c == 3) and (n == 0):
        eliminar(lista,aux.info.nombre,'nombre')
        print('Se ha eliminado al personaje '+ aux.info.nombre)
        p += 1
    aux = aux.sig
if p == 0:
    print('__No hay personajes que mostrar en esta lista.')
print()
# G
print('Personajes Humanos cuyo planeta de origen es Alderaan;')
aux = lista.inicio
while aux != None:
    if (aux.info.especie == 'Humano') and (aux.info.planeta == 'Alderaan'):
        print(aux.info.nombre +': es Humano y su planeta natal es: ' + aux.info.planeta) 
    aux = aux.sig
print()
# H
예제 #24
0
def starwars(l):
    lista_femeninos = Lista()
    lista_droide = Lista()
    """
        personajes_4567 = personajes que aparecen en los
        episodios 4, 5, 6, 7
    """
    personajes_4567 = Lista()
    """
        personajesMas850 = personajes que tienen mas de
        850 anios
    """
    personajesMas850 = Lista()
    """
        personajesMas850 = lista de personajes que aparecen
        en episodios que no sean el 4,5,6
    """
    lista_aux_episodios = Lista()
    lista_humanos = Lista()
    # Listado de alutras menor a 70
    lista_altura_menor = Lista()
    lista_episodios_chewbacca = Lista()
    aux = l.inicio
    while (aux is not None):
        if aux.info[3] == 'femenino':
            insertar(lista_femeninos, aux.info[0])
        if aux.info[4] == 'droide' and (aux.info[6] > 0 or aux.info[6] <= 6):
            insertar(lista_droide, aux.info[0])
        if aux.info[6] == 4 or aux.info[6] == 5 or aux.info[
                6] == 6 or aux.info[6] == 7:
            insertar(personajes_4567, aux.info[0])
        if aux.info[6] != 4 or aux.info[6] != 5 or aux.info[6] != 6:
            insertar(lista_aux_episodios, aux.info)
        if aux.info[0] == 'Darth Vader':
            info_darth = aux.info
        if aux.info[2] >= 850:
            insertar(personajesMas850, aux.info)
        if aux.info[4] == 'humana' and aux.info[5] == 'Alderan':
            insertar(lista_humanos, aux.info[0])
        if aux.info[1] < 70:
            insertar(lista_altura_menor, aux.info)
        if aux.info[0] == 'Chewbacca':
            insertar(lista_episodios_chewbacca, aux.info)
        aux = aux.sig

    aux = personajes_4567.inicio
    while (aux is not None):
        control = busquedaLista(lista_aux_episodios, aux.info[0])
        if control == -1:
            eliminar(l, aux.info)
        aux = aux.sig

    aux = personajesMas850.inicio
    may_edad = 0
    while (aux is not None):
        if aux.info[2] > may_edad:
            may_edad = aux.info
        aux = aux.sig

    print('Personajes de genero femenino: ')
    barridoLista(lista_femeninos)
    print(
        'Personajes de especie Droide que aparecen en los primeros 6 episodios: '
    )
    barridoLista(lista_droide)
    print('Informacion de Darth Vader: ')
    print(info_darth)
    print('Personajes que aparecen en el episodio VII y en los 3 anteriores: ')
    barridoLista(personajes_4567)
    print('Personajes mayores a 850 anios')
    barridoLista(personajesMas850)
    print('Y el mayor es: ')
    print(may_edad)
    print('Personajes de especie humana y planeta de origen Alderan')
    barridoLista(lista_humanos)
    print('Info de personajes con altura menor a 70')
    barridoLista(lista_altura_menor)
    print('Episodios en el que aparece Chewbacca')
    barridoLista(lista_episodios_chewbacca)
예제 #25
0
def eliminar_mostrar_nodos(lista):
        aux = lista.inicio
        while aux is not None:
            eliminar(lista, aux.info)
            print('Se elimino la siguiente información:', aux.info)
            aux = aux.sig