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))
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
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
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
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)
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)))
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