Example #1
0
def lista_sin_repetidos(lista1, lista2):
        lista_sr = Lista()
        aux = lista1.inicio
        while aux is not None:
            if busqueda_lista(lista_sr, aux.info) is None:
                insertar(lista_sr, aux.info)
            aux = aux.sig
        aux = lista2.inicio
        while aux is not None:
            if busqueda_lista(lista_sr, aux.info) is None:
                insertar(lista_sr, aux.info)
            aux = aux.sig
        print('Lista concatenada sin repetidos:')
        barrido_lista(lista_sr)
        print('Interseccion de las listas: ', tamanio_lista(lista_sr))
Example #2
0
def buscar_ta(tabla, hash, dato, criterio=None):
    '''Busca un dato en una tabla abierta'''
    pos = hash(dato, tabla)
    if tabla[pos] is not None:
        return busqueda_lista(tabla[pos], dato.palabra, criterio)
    else:
        return None
Example #3
0
def parciales(lista):
    print('Alumnos ordenados por apellido: ')
    for i in range(len(alumnos)):
        legajo = i+1
        dato = Alumno(alumnos[i],apellidos[i],legajo)
        insertar(lista, dato, 'apellido')
    barrido_lista(lista)
    for i in range(tamanio_lista(lista)):
        i += 1
        for j in range(3):
            pos = busqueda_lista(lista,i,'legajo')
            dato = Parcial(materias[j],randint(4,10),date(2020,randint(1,12),randint(1,30)))
            insertar(pos.sublista, dato, 'materia')
    barrido_sublista(lista)
    print(' ')
    aux = lista.inicio
    p = 0
    while aux != None:
        aprobado = True
        cont = 0
        prom = 0
        pos = aux.sublista.inicio
        while pos != None:
            cont += 1
            if pos.info.nota < 7:
                aprobado = False
            prom += pos.info.nota
            pos = pos.sig
        if aprobado == True:
            print(aux.info.nombre + ' ' + aux.info.apellido + ' aprobó todas las materias')
        if ((prom / cont) > 8.89):
            p += 1
            print(aux.info.nombre + ' ' + aux.info.apellido + ' Tiene promedio mayor a 8,89, su promedio es: ' + str(round(prom/cont,2)))
        aux = aux.sig
    if (p < 1):
        print('Ningun alumno tiene promedio mayor a 8,89.')
    print('')
    print('Alumnos con apellido que comienza con L')
    aux = lista.inicio
    while aux != None:
        if aux.info.apellido[0] == 'L':
            print(aux.info.nombre + ' ' + aux.info.apellido + ';  legajo ' + str(aux.info.legajo))
        aux = aux.sig
    print('')
    print('Promedio general:')
    aux = lista.inicio
    while aux != None:
        suma_notas = 0
        c = 0
        pos = aux.sublista.inicio
        while pos != None:
            suma_notas += pos.info.nota
            c += 1
            pos = pos.sig
        prom = (suma_notas / c)
        print('El promedio de el alumno ' + aux.info.nombre + ' ' + aux.info.apellido + ' es ' + str(round(prom,2)))
        aux = aux.sig
Example #4
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
Example #5
0
def pokemones(lista):
    for i in range(len(entrenadores)):
        aux = Entrenador(entrenadores[i],randint(0,10),randint(0,100),randint(0,100),randint(1,10))
        insertar(lista,aux,'t_ganados')
    barrido_lista(lista)
    print('')
    aux = lista.inicio
    while not aux == None:
        print(aux.info)
        print('---- Pokemones')
        cant = aux.info.cant_pok
        for j in range (cant):
            pok = choice(list(pokemon.keys()))
            dato = Pokemon(pok, pokemon[pok][0], pokemon[pok][1], randint(1,50))
            print(dato)
            insertar(aux.sublista,dato,'nivel')
        aux = aux.sig
        print('')
    #b
    print('')
    print('<<<<< Entrenadores que han ganado MAS de 3 torneos Pokemon >>>>>')
    aux = lista.inicio
    c = 0
    while not aux == None:
        if aux.info.t_ganados > 3 :
            print(aux.info)
            c += 1
        aux = aux.sig
    print(' - Hay ' + str(c) + ' entrenadores que ganaron mas de 3 torneos Pokemon.')
    print('')
    # C
    torn = 0
    ent = None
    aux = lista.inicio
    nv = 0
    pok = None
    while not aux == None:
        if aux.info.t_ganados > torn:
            torn = aux.info.t_ganados
            max_torn = aux.info.nombre
            ent = aux.sublista.inicio
            while not ent == None:
                if nv < ent.info.nivel:
                    nv = ent.info.nivel
                    pok = ent.info.nombrepok
                ent = ent.sig
        aux = aux.sig
    print('- El entrenador que mas Torneos Pokemon ha ganado es: ' + max_torn + ', con ' + str(torn)+ ' Torneos ganados.')
    print('- Su pokemon de mayor nivel es: ' + pok + ' de nivel ' + str(nv))
    print('')
    nom = input('ingrese Entrenador a mostrar sus datos y pokemones: ')
    pos = busqueda_lista(lista,nom,'nombre')
    if not pos == None:
        print(pos.info)
        print('_____Pokemones:')
        aux = pos.sublista.inicio
        while not aux == None:
            print(aux.info)
            aux = aux.sig
    print('')
    # e
    print('- ENTRENADORES CON PORCENTAJE DE VICTORIA MAYOR A 79% :')
    aux = lista.inicio
    x = False
    while aux is not None:
        bat_tot = aux.info.bat_ganadas + aux.info.bat_perdidas
        porcentaje = (aux.info.bat_ganadas * 100)/bat_tot
        if porcentaje > 79:
            x = True
            print(aux.info.nombre +' tiene un porcentaje de ' +str(round(porcentaje,2)) + '% batalladas ganadas.')
        aux = aux.sig
    if x == False:
        print('No hay Entrenadores con un porcentaje mayor a 79.')
    print()
    # f
    aux = lista.inicio
    while aux is not None:
        sub = aux.sublista.inicio
        while sub is not None:
            if (sub.info.tipo == 'fuego'):
                if (sub.info.subtipo == 'planta'):
                    print(aux.info.nombre, ': tiene un pokemon tipo fuego y subtipo planta, ' + sub.info.nombrepok)
            if (sub.info.tipo == 'agua'):
                if (sub.info.subtipo == 'volador'):
                    print(aux.info.nombre, ': tiene un pokemon tipo agua y subtipo volador, ' + sub.info.nombrepok)
            sub = sub.sig
        aux = aux.sig
        print('-')
    print('')
    # g
    nom = input('ingrese Entrenador a sacar promedio de nivel de sus Pokemones: ')
    pos = busqueda_lista(lista,nom,'nombre')
    if not pos == None:
        print(pos.info)
        niveles = 0
        cant = 0
        sub = pos.sublista.inicio
        while sub is not None:
            cant += 1
            print(sub.info)
            niveles += sub.info.nivel
            sub = sub.sig
        prom = niveles / cant
        print('--- El promedio de nivel de sus pokemones es: '+ str(round(prom, 2)))
    print('')
    # H
    aux = lista.inicio
    cont = 0
    pok = input(str('Ingrese el nombre del pokemon a buscar: '))
    while aux is not None:
        pos = busqueda_lista(aux.sublista, pok, 'nombrepok')
        if pos is not None:
            cont += 1
            print(aux.info.nombre +' tiene a ' + pok)
        aux = aux.sig
    print(str(cont) +' entrenadores tienen al pokemon '+ pok)
    print('')
    # J
    aux = lista.inicio
    while aux is not None:
        sub = aux.sublista.inicio
        while sub is not None:
            if (sub.info.nombrepok == 'Tyrantrum') or (sub.info.nombrepok == 'Terrakion') or (sub.info.nombrepok == 'Wingull'):
                print('El entrenador ' +aux.info.nombre + ', tiene al pokemon ' + sub.info.nombrepok)
            sub = sub.sig
        aux = aux.sig
    print('')
    # K
    pos = None
    n = None
    x = None
    while ent not in entrenadores:
        ent = input('Ingrese nombre del entrenador: ')
    pos = busqueda_lista(lista,ent,'nombre')
    while n not in pokemon:
        n = input('Ingrese nombre de pokemon a buscar: ')
    if (not pos == None) and (not n == None):
        print('')
        b = False
        nom = pos.sublista.inicio
        while not nom == None:
            if (nom.info.nombrepok == n):
                b = True
                break
            nom = nom.sig
        if b == False:
            print('El entrenador '+ pos.info.nombre + ' no tiene al pokemon buscado.')
        elif b == True:
            print('Entrenador y pokemon encontrados.')
            print('Mostrando sus datos...')
            sleep(1.5)
            print(pos.info)
            sleep(0.7)
            print(nom.info)
Example #6
0
def navesss():
    lista_ventas = Lista()
    clientes = Lista()
    sin_clientes = Lista()
    nombre_clientes = Lista()
    informe = Lista()
    #A
    archivo = open('naves')
    linea = archivo.readline()
    while linea:
        linea = linea.replace('\n', '')
        linea = linea.split(';')
        linea[0] = linea[0].upper()
        linea[1] = linea[1].upper()
        linea[2] = float(linea[2])
        linea[3] = linea[3].title()
        linea[4] = linea[4].title()
        insertar(lista_ventas, linea)
        linea = archivo.readline()      
    print('Lista de ventas de naves')
    barrido_lista(lista_ventas)
    print()
    aux = lista_ventas.inicio
    cont = 0
    ac = 0
    devolver = 0
    ingresoAT = 0
    while aux is not None:
        #B
        if aux.info[4] == 'Desconocido':
            insertar(sin_clientes, aux.info)
        else:
            insertar(clientes,aux.info)
            pos = busqueda_lista(nombre_clientes, aux.info[4],4)
            #E
            if pos == None:
                insertar(nombre_clientes,aux.info[4])
        #D
        cont += 1
        ac = ac + aux.info[2]
        #F
        if aux.info[4] == 'Darth Vader':
            insertar(informe, aux.info)
        #H
        if aux.info[1] == 'AT-AT' or aux.info == 'AT-ST' or aux.info == 'AT-TE':
            ingresoAT = ingresoAT + aux.info[2]
        aux = aux.sig

    print('Total de ingresos de creditos galacticos: ')
    print(ac)
    print()
    print('Total de naves vendidas:')
    print(cont)
    print()
    print('Listado de clientes')
    barrido_lista(nombre_clientes)
    print()
    print('Informe de compras de Darth Vader')
    barrido_lista(informe)
    print()
    print('Clientes que han comprado naves construidas con material reciclado y monto a devoler:')
    aux2 = lista_ventas.inicio
    while aux2 is not None:
        #G
        if aux2.info[3] == 'Si':
            devolver = (aux2.info[2] * 15) / 100
            print('Al cliente: '+ aux2.info[4] + ' se le devolvera, '+str(round(devolver,2)))
        aux2 = aux2.sig
    print()
    print('Ingreso genero la producción de naves cuyos modelos contengan la sigla “AT”.: '+str(round(ingresoAT,2)))
Example #7
0
def github(lista):
    lista = Lista()
    user = Usuario('Roman')
    insertar(lista, user, 'nombre')
    user = Usuario('Regina')
    insertar(lista, user, 'nombre')
    user = Usuario('Tania')
    insertar(lista, user, 'nombre')
    user = Usuario('Jesus')
    insertar(lista, user, 'nombre')
    commit = Commit('test.py', '11-11-20 19:00', 'testeo de la applicacion', 46)
    pos = busqueda_lista(lista, 'Roman', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('data.py', '11-11-20 19:00', 'correccion error', 12)
    pos = busqueda_lista(lista, 'Roman', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('object.java', '11-11-20 19:00', 'modelado del objeto', -37)
    pos = busqueda_lista(lista, 'Regina', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('app.py', '11-11-20 19:00', 'basta chicos', 34)
    pos = busqueda_lista(lista, 'Tania', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('front.html', '11-11-20 19:00', 'update', 47)
    pos = busqueda_lista(lista, 'Jesus', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('vista.css', '11-11-20 19:00', 'update', -2)
    pos = busqueda_lista(lista, 'Jesus', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    print('Lista de colaboradores: ')
    barrido_lista(lista)
    print()
    # a
    aux = lista.inicio
    mayor = 0
    while aux is not None:
        if tamanio_lista(aux.sublista) > mayor:
            mayor = tamanio_lista(aux.sublista)
        aux = aux.sig
    aux = lista.inicio
    while aux is not None:
        if tamanio_lista(aux.sublista) == mayor:
            print('Colaborador con mayor cantidad de commits: ' + aux.info.nombre)
            print('Cantidad de commits: '+ str(mayor))
        aux = aux.sig
    print()
    # b
    mayor = 0
    usuario = ''
    aux = lista.inicio
    while aux is not None:
        pos = aux.sublista.inicio
        mayor_aux = 0
        while pos is not None:
            mayor_aux += pos.info.cant_lineas
            pos = pos.sig
        if mayor_aux > mayor:
            mayor = mayor_aux
            usuario = aux.info.nombre
        aux = aux.sig
    print(usuario +', agrego la mayor cantidad de lineas: ' +str(mayor))
    menor = 0
    usuario_menor = ''
    aux = lista.inicio
    while aux is not None:
        pos = aux.sublista.inicio
        menor_aux = 0
        while pos is not None:
            menor_aux += pos.info.cant_lineas
            pos =pos.sig
        if menor_aux < menor:
            menor = menor_aux
            usuario_menor = aux.info.nombre
        aux = aux.sig
    print(usuario_menor+ ' elimino la mayor cantidad de lineas: '+ str(menor))
    print()
    # C
    aux = lista.inicio
    while aux is not None:
        pos = busqueda_lista(aux.sublista,'test.py','archivo')
        if pos is not None:
            print(aux.info.nombre + ', ha realizado cambios en test.py')
        aux = aux.sig
    # D
    print()
    aux = lista.inicio
    while aux is not None:
        pos = busqueda_lista(aux.sublista,0,'cant_lineas')
        if pos is not None:
            print(aux.info.nombre + ' ha realizado un commit con 0 lineas')
        aux = aux.sig
    print()
    # E
    aux = lista.inicio
    while aux is not None:
        pos = busqueda_lista(aux.sublista,'app.py','archivo')
        if pos is not None:
            print(aux.info.nombre + ', ha realizado cambios en app.py')
            barrido_sublista(aux.sublista)
        aux = aux.sig