예제 #1
0
def cantidad_ta(tabla):
    '''Cantidad de elementos de una tabla abierta'''
    cant = 0
    for elemento in tabla:
        if elemento is not None:
            cant += tamanio_lista(elemento)
    return cant
예제 #2
0
def proyecto_software():
    '''Actividades de un proyecto de software'''
    lista, en_tiempo, fuera_tiempo = Lista(), Lista(), Lista()
    persona = ['Gerardo', 'Martina', 'Lucia', 'Geovanni', 'Jessica', 'Laura']
    prom_tareas, costo_total = 0, 0
    df = ''
    for i in range(5):
        costo = randint(0, 50000)
        tde = randint(1, 10)
        fdi = [2020, randint(1, 12), randint(1, 31)]
        fdfest = [2020, randint(1, 12), randint(1, 31)]
        fdfefc = [2020, randint(1, 12), randint(1, 31)]
        pac = choice(persona)
        tarea = [costo, tde, fdi, fdfest, fdfefc, pac]
        insertar(lista, tarea)
    print(
        'Costo | Tiempo de ejec. | Fecha de inicio | Fecha de fin estimada | Fecha de fin efectiva | Persona a cargo'
    )
    barrido_lista(lista)
    print()
    aux = lista.inicio
    while aux is not None:
        dato = aux.info
        # a
        prom_tareas += dato[1]
        # b
        costo_total += dato[0]
        # c
        if dato[5]:
            print()
            print('Persona:', dato[5])
            print('Actividades que realiza:')
            print('Coste de la actividad:', dato[0], 'ARS')
            print('Tiempo de ejecucion:', dato[1])
        # d
        if dato[2][1] > 5 and dato[3][1] > 5:
            df = [dato[0], dato[1], dato[2], dato[3]]
        # e
        if dato[3][0] > dato[4][0] and dato[3][1] > dato[4][1]:
            insertar(fuera_tiempo, [dato[0], dato[1], dato[5]])
        else:
            insertar(en_tiempo, [dato[0], dato[1], dato[5]])
        aux = aux.sig
    prom_tareas = prom_tareas / tamanio_lista(lista)
    print()
    print('Tiempo promedio de tareas', prom_tareas)
    print('Costo total del proyecto', costo_total, 'ARS')
    print('Tareas a realizar entre dos fechas dadas(a partir de Junio):')
    print(df)
    print()
    print('Tareas finalizadas en tiempo estipulado')
    barrido_lista(en_tiempo)
    print()
    if not lista_vacia(fuera_tiempo):
        print('Tareas fuera de tiempo')
        barrido_lista(fuera_tiempo)
    else:
        print('No hay tareas fuera de tiempo')
예제 #3
0
 def lista_sin_repetidos(l1, l2):
     '''Concatena dos listas en una sola omitiendo los datos repetidos'''
     lsr = Lista()
     aux = l1.inicio
     while aux is not None:
         if busqueda_lista(lsr, aux.info) is None:
             insertar(lsr, aux.info)
         aux = aux.sig
     aux = l2.inicio
     while aux is not None:
         if busqueda_lista(lsr, aux.info) is None:
             insertar(lsr, aux.info)
         aux = aux.sig
     print('Lista concatenada sin repetidos')
     barrido_lista(lsr)
     print('Datos repetidos:', tamanio_lista(lsr))
예제 #4
0
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)
예제 #5
0
def github():
    repositorio = Lista()
    user = Usuario('elchiche32')
    insertar(repositorio, user, 'nombre')
    user = Usuario('taunus99')
    insertar(repositorio, user, 'nombre')
    user = Usuario('rickyfort')
    insertar(repositorio, user, 'nombre')
    user = Usuario('oktubr3')
    insertar(repositorio, user, 'nombre')
    commit = Commit('test.py', '11-11-20 19:00', 'testeo de la app', 46)
    pos = busqueda_lista(repositorio, 'elchiche32', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('data.py', '11-11-20 19:00', 'correccion error', 120)
    pos = busqueda_lista(repositorio, 'elchiche32', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('object.java', '11-11-20 19:00', 'modelado del objeto', 0)
    pos = busqueda_lista(repositorio, 'taunus99', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('app.py', '11-11-20 19:00', 'basta chicos', -34)
    pos = busqueda_lista(repositorio, 'rickyfort', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('front.html', '11-11-20 19:00', 'update', 87)
    pos = busqueda_lista(repositorio, 'oktubr3', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    commit = Commit('vista.css', '11-11-20 19:00', 'update', -2)
    pos = busqueda_lista(repositorio, 'oktubr3', 'nombre')
    insertar(pos.sublista, commit, 'archivo')
    # barrido lista
    print('COLABORADORES')
    barrido_lista(repositorio)
    print()
    aux = repositorio.inicio
    # barrido sublista
    while aux is not None:
        print('Colaborador:', aux.info)
        print('ARCHIVO | TIMESTAMP | COMENTARIO | LINEAS MODIFICADAS')
        barrido_sublista(aux.sublista)
        print()
        aux = aux.sig

    # a
    aux = repositorio.inicio
    mayor_commit = 0
    while aux is not None:
        if tamanio_lista(aux.sublista) > mayor_commit:
            mayor_commit = tamanio_lista(aux.sublista)
        aux = aux.sig
    aux = repositorio.inicio
    while aux is not None:
        if tamanio_lista(aux.sublista) == mayor_commit:
            print('Colaborador con mayor cantidad de commits:', aux.info)
            print('Cantidad de commits:', mayor_commit)
        aux = aux.sig
    print()

    # b
    mayor = 0
    usuario_mayor = ''
    aux = repositorio.inicio
    while aux is not None:
        sublista = aux.sublista.inicio
        mayor_aux = 0
        while sublista is not None:
            mayor_aux += sublista.info.cant_lineas
            sublista = sublista.sig
        if mayor_aux > mayor:
            mayor = mayor_aux
            usuario_mayor = aux.info.nombre
        aux = aux.sig
    print('El usuario', usuario_mayor, 'agrego la mayor cantidad de lineas:',
          mayor)

    menor = 0
    usuario_menor = ''
    aux = repositorio.inicio
    while aux is not None:
        sublista = aux.sublista.inicio
        menor_aux = 0
        while sublista is not None:
            menor_aux += sublista.info.cant_lineas
            sublista = sublista.sig
        if menor_aux < menor:
            menor = menor_aux
            usuario_menor = aux.info.nombre
        aux = aux.sig
    print('El usuario', usuario_menor, 'elimino la mayor cantidad de lineas:',
          menor)

    # c
    aux = repositorio.inicio
    while aux is not None:
        pos = busqueda_lista(aux.sublista, 'test.py', 'archivo')
        if pos is not None:
            print('El usuario', aux.info, 'realizo cambios en test.py')
        aux = aux.sig

    # d
    aux = repositorio.inicio
    while aux is not None:
        pos = busqueda_lista(aux.sublista, 0, 'cant_lineas')
        if pos is not None:
            print('El usuario', aux.info, 'realizo un commit con 0 lineas')
        aux = aux.sig
    print()

    # e
    aux = repositorio.inicio
    while aux is not None:
        pos = busqueda_lista(aux.sublista, 'app.py', 'archivo')
        if pos is not None:
            print('El usuario', aux.info, 'realizo cambios en app.py')
            print('ARCHIVO | TIMESTAMP | COMENTARIO | LINEAS MODIFICADAS')
            barrido_sublista(aux.sublista)
        aux = aux.sig
예제 #6
0
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()
예제 #7
0
def pokemon():
    lista = Lista()
    pokemon = [
        'Bulbasaur', 'Charmander', 'Squirtle', 'Pikachu', 'Spearow', 'Dugtrio',
        'Primeape', 'Terrakion', 'Tyrantrum', 'Wingull'
    ]
    tipo = ['Fuego', 'Agua', 'Electrico', 'Normal', 'Veneno']
    subtipo = ['Tierra', '-', 'Planta', 'Agua', '-', 'Volador']
    dato = Entrenador('Ranchero', randint(0, 10), randint(50, 200),
                      randint(0, 100))
    insertar(lista, dato, 'entrenador')
    dato = Entrenador('Alevin', randint(0, 10), randint(50, 200),
                      randint(0, 100))
    insertar(lista, dato, 'entrenador')
    dato = Entrenador('Pescador', randint(0, 10), randint(50, 200),
                      randint(0, 100))
    insertar(lista, dato, 'entrenador')
    for i in range(2):
        poke = Pokemon(choice(pokemon), randint(1, 20), choice(tipo),
                       choice(subtipo))
        pos = busqueda_lista(lista, 'Ranchero', 'entrenador')
        insertar(pos.sublista, poke, 'pokemon')
    for i in range(3):
        poke = Pokemon(choice(pokemon), randint(1, 20), choice(tipo),
                       choice(subtipo))
        pos = busqueda_lista(lista, 'Alevin', 'entrenador')
        insertar(pos.sublista, poke, 'pokemon')
    for i in range(4):
        poke = Pokemon(choice(pokemon), randint(1, 20), choice(tipo),
                       choice(subtipo))
        pos = busqueda_lista(lista, 'Pescador', 'entrenador')
        insertar(pos.sublista, poke, 'pokemon')
    # d
    print('NOMBRE | TORNEOS GAN. | VICTORIAS | DERROTAS')
    barrido_lista(lista)
    print()
    aux = lista.inicio
    # barrido sublista
    while aux is not None:
        print('Entrenador:', aux.info.entrenador)
        print('NOMBRE | NIVEL | TIPO | SUBTIPO')
        barrido_sublista(aux.sublista)
        print()
        aux = aux.sig

    # a
    aux = lista.inicio
    print('Cantidad de Pokemons de un determinado entrenador')
    entr = input('Ingrese nombre del entrenador: ')
    while aux is not None:
        pos = busqueda_lista(lista, entr, 'entrenador')
        if pos is not None:
            print(aux.info.entrenador, 'posee', tamanio_lista(aux.sublista),
                  'pokemones')
        else:
            print('El entrenador no existe')
            break
        aux = aux.sig
    print()

    # b
    aux = lista.inicio
    print('Entrenadores que ganaron mas de 3 torneos')
    while aux is not None:
        if aux.info.t_ganados >= 3:
            print(aux.info.entrenador + ':', aux.info.t_ganados, 'torneos')
        aux = aux.sig
    print()

    # c
    aux = lista.inicio
    mg, mn = 0, 0
    while aux is not None:
        if aux.info.t_ganados > mg:
            mg = aux.info.t_ganados
            mas_ganador = aux.info.entrenador
        buscado = busqueda_lista(aux.info.entrenador, mas_ganador,
                                 'entrenador')
        if buscado is not None:
            sublista = aux.sublista.inicio
            while sublista is not None:
                if sublista.info.nivel > mn:
                    mn = sublista.info.nivel
                    mayor_nivel = sublista.info.pokemon
                sublista = sublista.sig
        aux = aux.sig
    print('El entrenador mas ganador es', mas_ganador, 'con', mg, 'torneos')
    print('Su pokemon de mayor nivel es', mayor_nivel, 'con nivel', mn)
    print()

    # e
    aux = lista.inicio
    while aux is not None:
        batallas_totales = aux.info.b_ganadas + aux.info.b_perdidas
        porcentaje_batallas = (aux.info.b_ganadas * 100) / batallas_totales
        if porcentaje_batallas > 79:
            print(aux.info.entrenador,
                  'tiene un porcentaje de batalladas ganadas mayor a 79%')
        aux = aux.sig
    print()

    # f
    aux = lista.inicio
    while aux is not None:
        sublista = aux.sublista.inicio
        while sublista is not None:
            if sublista.info.tipo == 'Fuego' and sublista.info.subtipo == 'Planta':
                print(aux.info.entrenador,
                      'posee un pokemon tipo fuego y subtipo planta, llamado',
                      sublista.info.pokemon)
            if sublista.info.tipo == 'Agua' and sublista.info.subtipo == 'Volador':
                print(aux.info.entrenador,
                      'posee un pokemon tipo agua y subtipo volador, llamado',
                      sublista.info.pokemon)
            sublista = sublista.sig
        aux = aux.sig
    print()

    # g
    aux = lista.inicio
    while aux is not None:
        sublista = aux.sublista.inicio
        cont_nivel = 0
        while sublista is not None:
            cont_nivel += sublista.info.nivel
            prom_nivel = cont_nivel / tamanio_lista(aux.sublista)
            sublista = sublista.sig
        # round redondea el valor prom_nivel a 2 digitos despues de la coma
        print(aux.info.entrenador + ', promedio de nivel de sus pokemons:',
              round(prom_nivel, 2))
        aux = aux.sig
    print()

    # h
    aux = lista.inicio
    cont = 0
    poke = input('Ingrese nombre de pokemon a buscar: ')
    while aux is not None:
        pos = busqueda_lista(aux.sublista, poke, 'pokemon')
        if pos is not None:
            cont += 1
        aux = aux.sig
    print(cont, 'entrenadores tienen al pokemon', poke)
    print()

    # j
    aux = lista.inicio
    while aux is not None:
        sublista = aux.sublista.inicio
        while sublista is not None:
            if sublista.info.pokemon == 'Tyrantrum' or sublista.info.pokemon == 'Terrakion' or sublista.info.pokemon == 'Wingull':
                print(aux.info.entrenador, 'tiene al pokemon',
                      sublista.info.pokemon)
            sublista = sublista.sig
        aux = aux.sig
    print()

    # k
    aux = lista.inicio
    print('Busca un entrenador y sus pokemones')
    entr = input('Ingrese nombre de entrenador a buscar: ')
    poke = input('Ingrese nombre de pokemon a buscar: ')
    while aux is not None:
        sublista = aux.sublista.inicio
        while sublista is not None:
            if entr == aux.info.entrenador and poke == sublista.info.pokemon:
                print()
                print('NOMBRE | TORNEOS GAN. | VICTORIAS | DERROTAS')
                print(aux.info)
                print()
                print('NOMBRE | NIVEL | TIPO | SUBTIPO')
                print(sublista.info)
            sublista = sublista.sig
        aux = aux.sig
예제 #8
0
def lista_alumnos():
    lista = Lista()
    materias = [
        'Estiramiento', 'Cardio', 'Juego con los pies', 'Retención',
        'Saque abajo', 'Saque arriba', 'Centros', 'Psicología'
    ]
    dato = Alumno('Armani', 'Franco', 1)
    insertar(lista, dato, 'apellido')
    dato = Alumno('Lux', 'Germán', 14)
    insertar(lista, dato, 'apellido')
    dato = Alumno('Bologna', 'Enrique', 25)
    insertar(lista, dato, 'apellido')
    dato = Alumno('Centurión', 'Ezequiel', 12)
    insertar(lista, dato, 'apellido')
    for i in range(3):
        datos = Parcial(choice(materias), randint(9, 10), date(2020, 12, 9))
        pos = busqueda_lista(lista, 1, 'legajo')
        insertar(pos.sublista, datos, 'materia')
    for i in range(3):
        datos = Parcial(choice(materias), randint(4, 8), date(2020, 12, 9))
        pos = busqueda_lista(lista, 12, 'legajo')
        insertar(pos.sublista, datos, 'materia')
    for i in range(3):
        datos = Parcial(choice(materias), randint(2, 7), date(2020, 12, 9))
        pos = busqueda_lista(lista, 14, 'legajo')
        insertar(pos.sublista, datos, 'materia')
    for i in range(3):
        datos = Parcial(choice(materias), randint(5, 10), date(2020, 12, 9))
        pos = busqueda_lista(lista, 25, 'legajo')
        insertar(pos.sublista, datos, 'materia')

    # a
    print('APELLIDO | NOMBRE | LEGAJO')
    barrido_lista(lista)
    print()

    # sublista
    aux = lista.inicio
    while aux is not None:
        print('Alumno:', aux.info.apellido + ', ' + aux.info.nombre)
        print('MATERIA | NOTA | FECHA')
        barrido_sublista(aux.sublista)
        aux = aux.sig
        print()

    aux = lista.inicio
    while aux is not None:
        # b
        promedio = 0
        sublista = aux.sublista.inicio
        control = True
        while sublista is not None:
            if sublista.info.nota < 6:
                control = False
            promedio += sublista.info.nota
            sublista = sublista.sig
        if control and tamanio_lista(aux.sublista) > 0:
            print('Aprobo todos los examenes:', aux.info.apellido,
                  aux.info.nombre)
        # e
        if tamanio_lista(aux.sublista) > 0:
            promedio = promedio / tamanio_lista(aux.sublista)
            print(aux.info.apellido, aux.info.nombre, 'promedio:',
                  round(promedio, 2))
        # c
        if (promedio > 8.89):
            print('Promedio mayor a 8.89:', aux.info.apellido, aux.info.nombre,
                  round(promedio, 2))
        # d
        if (aux.info.apellido[0].upper() == 'L'):
            print(aux.info.apellido, aux.info.nombre, 'empieza con la letra L')

        aux = aux.sig
예제 #9
0
def empresa_meteorologica():
    lista = Lista()
    paises = [
        'Myanmar', 'Laos', 'Vietnam', 'Indonesia', 'Malasia', 'Singapur',
        'Brunei', 'Sri Lanka'
    ]
    estado = [
        'soleado', 'nublado', 'lloviendo', 'nevando', 'tormenta eléctrica',
        'huracanes'
    ]
    datos = Estacion('Invierno', choice(paises), randint(-90, 90),
                     randint(-180, 180), randint(0, 2000))
    insertar(lista, datos, 'estacion')
    datos = Estacion('Otoño', choice(paises), randint(-90, 90),
                     randint(-180, 180), randint(0, 2000))
    insertar(lista, datos, 'estacion')
    datos = Estacion('Primavera', choice(paises), randint(-90, 90),
                     randint(-180, 180), randint(0, 2000))
    insertar(lista, datos, 'estacion')
    datos = Estacion('Verano', choice(paises), randint(-90, 90),
                     randint(-180, 180), randint(0, 2000))
    insertar(lista, datos, 'estacion')
    for i in range(1):
        datos = Medicion(randint(0, 10), randint(700, 800), randint(0, 100),
                         choice(estado),
                         date(2020, randint(1, 12), randint(1, 30)),
                         time((randint(00, 23)), (randint(00, 59))))
        pos = busqueda_lista(lista, 'Invierno', 'estacion')
        insertar(pos.sublista, datos, 'estacion')
    for i in range(1):
        datos = Medicion(randint(10, 25), randint(700, 800), randint(0, 100),
                         choice(estado),
                         date(2020, randint(1, 12), randint(1, 30)),
                         time((randint(00, 23)), (randint(00, 59))))
        pos = busqueda_lista(lista, 'Otoño', 'estacion')
        insertar(pos.sublista, datos, 'estacion')
    for i in range(1):
        datos = Medicion(randint(15, 30), randint(700, 800), randint(0, 100),
                         choice(estado),
                         date(2020, randint(1, 12), randint(1, 30)),
                         time((randint(00, 23)), (randint(00, 59))))
        pos = busqueda_lista(lista, 'Primavera', 'estacion')
        insertar(pos.sublista, datos, 'estacion')
    for i in range(1):
        datos = Medicion(randint(20, 40), randint(700, 800), randint(0, 100),
                         choice(estado),
                         date(2020, randint(1, 12), randint(1, 30)),
                         time((randint(00, 23)), (randint(00, 59))))
        pos = busqueda_lista(lista, 'Verano', 'estacion')
        insertar(pos.sublista, datos, 'estacion')
    # a
    print(' ESTACION | PAIS | LATITUD | LONGUITD | ALTITUD')
    barrido_lista(lista)
    print()

    # b
    aux = lista.inicio
    while aux is not None:
        print('Estacion:', aux.info.estacion)
        print('Pais:', aux.info.pais)
        print('TEMP. | PRESION | HUMEDAD | ESTADO |   FECHA   |   HORA   ')
        barrido_sublista(aux.sublista)
        print()
        aux = aux.sig
    print()

    # c
    aux = lista.inicio
    prom_temperatura = 0
    prom_humedad = 0
    while aux is not None:
        sublista = aux.sublista.inicio
        while sublista is not None:
            prom_temperatura += sublista.info.temperatura
            prom_humedad += sublista.info.humedad
            sublista = sublista.sig
        aux = aux.sig
    print('Promedio de temperatura:', prom_temperatura / tamanio_lista(lista))
    print('Promedio de humedad:', prom_humedad / tamanio_lista(lista))
    print()

    # d
    aux = lista.inicio
    while aux is not None:
        lluvia = busqueda_lista(aux.sublista, 'lloviendo', 'estado')
        if lluvia is not None:
            print('En', aux.info.pais, 'esta lloviendo')
        nieve = busqueda_lista(aux.sublista, 'nevando', 'estado')
        if nieve is not None:
            print('En', aux.info.pais, 'esta nevando')
        aux = aux.sig
    print()

    # e
    aux = lista.inicio
    while aux is not None:
        tormenta = busqueda_lista(aux.sublista, 'tormenta eléctrica', 'estado')
        if tormenta is not None:
            print(' ESTACION | PAIS | LATITUD | LONGUITD | ALTITUD')
            print(aux.info, ', se registraron tormentas eléctricas')
            print()
        huracan = busqueda_lista(aux.sublista, 'huracanes', 'estado')
        if huracan is not None:
            print(' ESTACION | PAIS | LATITUD | LONGUITD | ALTITUD')
            print(aux.info, ' , se registraron huracanes')
            print()
        aux = aux.sig
    print()
예제 #10
0
def astillero():
    lista, lista_clientes, lista_anonimos = Lista(), Lista(), Lista()
    nombre_clientes = Lista()
    producto = [
        'Caza TIE', 'Destructor Estelar', 'Transporte Acorazado AT-AT',
        'Transporte de Exploración AT-ST', 'Ejecutor Táctico AT-TE'
    ]
    reciclado = [True, False]
    comprador = [
        'Darth Vader', 'Lando Calrissian', 'Boba Fett', 'Flia. Organa',
        'Han Solo', 'Desconocido'
    ]
    venta = Ventas_Naves(randint(1, 1000), choice(producto),
                         randint(1000, 100000), choice(reciclado),
                         choice(comprador))
    insertar(lista, venta, 'codigo')
    venta = Ventas_Naves(randint(1, 1000), choice(producto),
                         randint(1000, 100000), choice(reciclado),
                         choice(comprador))
    insertar(lista, venta, 'codigo')
    venta = Ventas_Naves(randint(1, 1000), choice(producto),
                         randint(1000, 100000), choice(reciclado),
                         choice(comprador))
    insertar(lista, venta, 'codigo')
    venta = Ventas_Naves(randint(1, 1000), choice(producto),
                         randint(1000, 100000), choice(reciclado),
                         choice(comprador))
    insertar(lista, venta, 'codigo')
    venta = Ventas_Naves(randint(1, 1000), choice(producto),
                         randint(1000, 100000), choice(reciclado),
                         choice(comprador))
    insertar(lista, venta, 'codigo')
    # a
    print('LISTA PRINCIPAL')
    print('CODIGO | PRODUCTO | PRECIO | RECIADO(V/F) | COMPRADOR')
    barrido_lista(lista)
    print()

    # b
    aux = lista.inicio
    while aux is not None:
        if aux.info.cliente == 'Desconocido':
            insertar(lista_anonimos, aux.info, 'codigo')
        else:
            insertar(lista_clientes, aux.info, 'codigo')
        aux = aux.sig
    print('Ventas a clientes habituales')
    barrido_lista(lista_clientes)
    print()
    print('Ventas a clientes desconocidos')
    if not lista_vacia(lista_anonimos):
        barrido_lista(lista_anonimos)
    else:
        print('No hay compradores anonimos')
    print()

    # c pendiente

    # d
    aux = lista.inicio
    total_ingresos = 0
    while aux is not None:
        total_ingresos += aux.info.precio
        aux = aux.sig
    print('Cantidad de unidades vendidas:', tamanio_lista(lista))
    print('Ingresos totales:', total_ingresos, 'creditos galácticos')
    print()

    # e
    aux = lista.inicio
    while aux is not None:
        nombre = aux.info.cliente
        pos = busqueda_lista(nombre_clientes, nombre)
        if pos is None:
            insertar(nombre_clientes, nombre)
        aux = aux.sig
    print('Listado de clientes:')
    barrido_lista(nombre_clientes)
    print()

    # f
    aux = lista.inicio
    print('Compras realizadas por Darth Vader')
    while aux is not None:
        if aux.info.cliente == 'Darth Vader':
            print(aux.info)
        aux = aux.sig
    print()

    # g
    aux = lista.inicio
    print(
        'Descuento del 15% a los clientes que compraron naves con partes recicladas'
    )
    while aux is not None:
        if aux.info.reciclado is True:
            descuento = aux.info.precio * 15 / 100
            print('Al cliente', aux.info.cliente, 'se le deben reintegrar',
                  descuento, 'creditos')
        aux = aux.sig
    print()

    # h
    aux = lista.inicio
    ingresos_at = 0
    while aux is not None:
        pos = busqueda_lista(lista, 'AT', 'producto')
        if pos is None:
            ingresos_at += aux.info.precio
        aux = aux.sig
    print('La venta de naves modelo AT generó', ingresos_at, 'creditos')