6. ¿Cuáles son los nombres de los ganadores?¶

6.1. Usando otra lista¶
Para saberlo podemos usar dos listas.
La lista
nombres
y la listapuntuaciones
para guardar los nombres y las puntuaciones obtenidas por los participantes respectivamente.
surf4.txt
archivo = open("surf4.txt")
puntuaciones = []
nombres = []
for linea in archivo:
nombre, puntos = linea.split()
puntuaciones.append(float(puntos))
nombres.append(nombre)
archivo.close()
puntuaciones.sort(reverse = True)
nombres.sort(reverse = True)
print(f"1. {nombres[0]} {puntuaciones[0]:.2f}")
print(f"2. {nombres[1]} {puntuaciones[1]:.2f}")
print(f"3. {nombres[2]} {puntuaciones[2]:.2f}")
Activity: 6.1.2 ActiveCode (ac_l37_6a)
6.2. ¡Pero estos datos son incorrectos!¶
Debe haber un problema porque ¡Zack es realmente malo!
¿Qué fue lo sucedió?
Ordenando la lista
nombres
de forma decreciente el carácter'Z'
termina siendo el primero.Se pierde la correspondencia de las puntuaciones y los nombres de los participantes.
Necesario otra estructura de datos para no perder la correspondencia.
6.3. Necesitamos unir las listas¶

6.4. Usando y ordenando un diccionario¶
Usando un diccionario y ver todos sus elementos de forma iterativa.
Print output (drag lower right corner to resize)
|
Activity: CodeLens 6.4.1 (cl_l37_6)
Usando un diccionario para el campeonato.
archivo = open("surf4.txt")
puntuaciones = {}
for linea in archivo:
nombre, puntos = linea.split()
puntuaciones[float(puntos)] = nombre
archivo.close()
for participante in sorted(puntuaciones, reverse=True):
print(f"{puntuaciones[participante]} obtuvo un puntaje de {participante:.2f}")
Activity: 6.4.2 ActiveCode (ac_l37_6b)
Activity: 6.4.3 Poll (TWP37)