Orden - johncroth/pythonEd2024 GitHub Wiki

Muy a menudo, una lista representará datos recopilados de alguna fuente y querrá analizar estos datos. Para hacerlo, a menudo necesitamos ordenar los elementos de la lista.

Listas ordenadas

La función sorted ("ordenado") crea una nueva lista con los mismos elementos en un orden diferente. Add the following lines to orden_a.py and run it and note the output.

datos = [2,8,3.5,14,2]
datos_en_orden = sorted(datos)
print("Original", datos)
print("Ordenado", datos_en_orden)

Estadísticas

Guarde el siguiente programa en orden_b.py. Este programa lanza 5 dados y suma los valores; esto es un número entre 5 y 30. Lo repite 1000 veces, poniendo cada total en una lista.

from random import randint 

totals = []
for i in range(0,1000):
    total = 0
    for j in range( 0, 5 ):
        total = total + randint(1,6)
    totals.append(total)

print("Tengo", len(totals), "resultos")

Podríamos imprimir la lista de totales, pero solo veríamos una larga lista de números. En cambio, para entender qué está pasando, ordenamos la lista y hacemos algunas preguntas al respecto. Agregue lo siguiente:

print("El mas pequeño es", en_orden[0])
print("El mas grande es", en_orden[999])
print("El mediano es", en_orden[500])

Como la lista está ordenada, sabemos que los valores más pequeños y más grandes están en la primera y la última entrada de la lista. La "mediana" no es el promedio, pero sabemos que 500 de los valores son más pequeños y el otro medio 500 mayor que el valor en en_orden[500].

Ejecute el programa varias veces. Tenga en cuenta que incluso en 1000 roles no siempre vemos un total de "5" o de "30", es decir, 5 unos y 5 seises todavía son raros. Estas "estadísticas" sobre el juicio, son formas de describir el gran conjunto de números. Exploramos esto un poco más en el ejercicio siguiente.

Ejercicios

  1. Copie y guarde el programa en orden_b.py en un nuevo archivo llamado orden_1.py, para que podamos hacer algunos modificaciones.

    A. Modifique el programa para tirar los dados 10000 veces en lugar de 1000. Ejecútelo unas cuantas veces y haga Seguro que crees en los resultados. En 10000 lanzamientos, deberíamos obtener un 5 y un 30 casi siempre, ¿verdad?

    B. Modifica el programa para tirar los dados 100 veces en lugar de 1000 o 10000.

    C. Ha notado que debe cambiar los índices para calcular el máximo y la mediana cuando cambias el número de ensayos. Mejorar el programa definiendo una constante para el número de lanzamientos, como nombre_de_tiras = 100, y usa este nombre siempre que sea posible. Comprueba tus resultados con 100, 1000 y 10000 ensayos.

    D. Tenemos 3 estadísticas interesantes aquí: valor mínimo, valor mediano (o central), valor máximo. Otro Una estadística interesante, a veces, es el "percentil 10": el 10 por ciento de los valores en un ensayo son más pequeños que este. Es decir, por ejemplo, si hay 1000 ensayos, es el valor número 100 en la lista ordenada. Agregue una línea para imprimir el percentil 10.

    E. Agregue una línea para imprimir el percentil 90. (Por ejemplo, si hay 1000 pruebas, es el valor número 900 más grande).

  2. En el archivo "orden_2.py", escriba un "juego" que mida la capacidad del usuario para presionar la tecla Enter en ritmo, pero que ahora le pide al usuario que presione la tecla Intro 10 veces a un ritmo constante. Almacene el tiempo transcurrido entre cada par de pulsaciones de teclas en una lista. Cuando termine, muestre la lista de tiempos entre pulsaciones, y luego también el menor y el mayor de estos valores. Mas o menos como esto:

    Empujar <Enter> para empezar, y presionane en ritmo 10 veces mas.
    Empujar <Enter> otra vez
    Empujar <Enter> otra vez
    Empujar <Enter> otra vez
    Empujar <Enter> otra vez
    Empujar <Enter> otra vez
    Empujar <Enter> otra vez
    Empujar <Enter> otra vez
    Empujar <Enter> otra vez
    Empujar <Enter> otra vez
    Empujar <Enter> otra vez
    Tus intervales: [0.67185378074646, 0.7783703804016113, 0.8117647171020508, 0.7129857540130615, 0.6942079067230225, 0.6790716648101807,  0.6637749671936035, 0.7210545539855957, 0.7009344100952148, 0.7096066474914551]
    El mas corto era  0.6637749671936035
    El mas largo era  0.8117647171020508
    

    (Aquí hay una manera de dividir esto en partes. (1) Revise el ejercicio 3 en la sección "Tiempo". (2) Escriba un programa que mida el tiempo transcurrido e imprima el tiempo, 3 veces en lugar de 10. (2) Si es necesario, convierta esto para usar un bucle for (3) En lugar de imprimir los tiempos, agregue los tiempos a una lista e imprima la lista al final. (4) Aumente el rango en el bucle a 10. (5) Calcule las estadísticas imprimiendo el primer y último elemento de la lista ordenada).

  3. El siguiente programa casi pone la lista en orden alfabético, pero no del todo. Arreglalo para que funcione mejor, pero ¿Cuál crees que es el problema?

    mi_lista_negra = [
        "Alejandro", "maria", "Diego", "Gabriela",
        "Carlos", "Lucia", "Juan", "Sofia", "Miguel", "Valentina"
    ]
    en_orden = sorted( mi_lista_negra )
    print(en_orden)

punchcardsorter (Phone) punchcard

Poner un conjunto de cosas en un orden determinado era un problema importante, ¡incluso antes de que se inventaran las computadoras! Máquinas como esta clasificadora de tarjetas perforadas son 50 años anteriores a las computadoras digitales. Este modelo fue fabricado por la famosa impresa IBM. Los valores se codifican en tarjetas practicando agujeros en las posiciones numeradas y la máquina puede clasificarlos mecánicamente.

⚠️ **GitHub.com Fallback** ⚠️