Cuando se tienen listas paralelas y se ordenan los elementos de una de ellas hay que tener la precaución de intercambiar los elementos de las listas paralelas.
Confeccionar un programa que permita cargar los nombres de 5 alumnos y sus notas respectivas. Luego ordenar las notas de mayor a menor. Imprimir las notas y los nombres de los alumnos.
Debe quedar claro que cuando intercambiamos las notas para dejarlas ordenadas de mayor a menor debemos intercambiar los nombres para que las listas continúen paralelas (es decir que en los mismos subíndices de cada lista continúe la información relacionada)
alumnos=[] notas=[] for x in range(5): nom=input("Ingrese el nombre del alumno:") alumnos.append(nom) no=int(input("Ingrese la nota de dicho alumno:")) notas.append(no) for k in range(4): for x in range(4-k): if notas[x]<notas[x+1]: aux1=notas[x] notas[x]=notas[x+1] notas[x+1]=aux1 aux2=alumnos[x] alumnos[x]=alumnos[x+1] alumnos[x+1]=aux2 print("Lista de alumnos y sus notas ordenadas de mayor a menor") for x in range(5): print(alumnos[x],notas[x])
Definimos y cargamos dos listas con cinco elementos cada una:
alumnos=[] notas=[] for x in range(5): nom=input("Ingrese el nombre del alumno:") alumnos.append(nom) no=int(input("Ingrese la nota de dicho alumno:")) notas.append(no)
Lo nuevo se presenta cuando ordenamos la lista de notas de mayor a menor. La condición dentro de los dos ciclos repetitivos depende de la lista notas, pero en el caso que se verifique verdadera intercambiamos tanto los elementos de la lista notas como el de la lista alumnos con el fin que continúen paralelas:
for k in range(4): for x in range(4-k): if notas[x]<notas[x+1]: aux1=notas[x] notas[x]=notas[x+1] notas[x+1]=aux1 aux2=alumnos[x] alumnos[x]=alumnos[x+1] alumnos[x+1]=aux2
Imprimimos las dos listas:
for x in range(5): print(alumnos[x],notas[x])
Algo que no habíamos utilizado en Python hasta ahora es imprimir varios datos en la misma línea, esto se logra pasando más de un parámetro a la función print separándolos por una coma:
print(alumnos[x],notas[x])
El resultado de ejecutar este programa:
ejercicio94.py paises=[] habitantes=[] for x in range(5): nom=input("Ingrese el nombre del pais:") paises.append(nom) cant=int(input("Cantidad de habitantes")) habitantes.append(cant) # ordenamiento alfabetico for k in range(4): for x in range(4-k): if paises[x]>paises[x+1]: aux1=paises[x] paises[x]=paises[x+1] paises[x+1]=aux1 aux2=habitantes[x] habitantes[x]=habitantes[x+1] habitantes[x+1]=aux2 print("Listado de paises en orden alfabetico") for x in range(5): print(paises[x],habitantes[x]) # ordenamiento por cantidad de habitantes for k in range(4): for x in range(4-k): if habitantes[x]<habitantes[x+1]: aux1=paises[x] paises[x]=paises[x+1] paises[x+1]=aux1 aux2=habitantes[x] habitantes[x]=habitantes[x+1] habitantes[x+1]=aux2 print("Listado de paises por cantidad de habitantes") for x in range(5): print(paises[x],habitantes[x])