6. Ciclo "while"

6.2. Ejemplos de usos de "while" controlado por evento

Consigna 1:

Calcular el promedio de notas que se ingresa, el proceso finaliza al ingresar -1 (uno negativo).

Para simplificar el código, se asume que no se van a ingresar valores que puedan producir un error de excepción (ingreso de carácter)




      • ¿Qué evento debe pasar para que el bucle se termine?.
      • ¿Qué sucede si el primer valor que se ingresa es -1?.

      • Se dice que el ingreso de notas termina por un EVENTO, porque la condición que aborta el ciclo, es un ingreso no válido (no una excepción)

Consigna 2:

Se quiere calcular el promedio de notas que se van ingresado, el proceso finaliza al ingresar un string que no sean números.



      • En línea 10 se establece calculando = True para que en la línea 11 la condición del "while" sea verdadera e ingrese al bucle de nuestro programa.
      • En línea 12 se ingresa por teclado la nota como "string".
      • Defino un bloque try, para que intente convertir la nota tipo "string" ingresada a un valor "float", si lo consigue NO hay excepción, y puede acumular y contar.
      • Si se genera una excepción, en la linea 14, nota = float(nota) , esta sería por "ValueError", no puede convertir el string a float, por lo que ejecuta el bloque de excepción.
      • En el bloque de excepción se cambia el valor de calculando = False para que se aborte el bucle "while".
      • Fuera del "while", línea 21 cálculo el promedio y en la 23 muestro.

      • ¿Qué diferencias observa en los scripts mostrados para garantizar el ingreso al bucle?.
      • ¿Qué tipo de dato es "calculando" en el segundo script?.
      • ¿Cree que el código es correcto?.
      • ¿Qué sucede si se ingresan valores negativos para las notas? ¿Funciona?.
      • ¿Qué sucede si las notas ingresadas no pertenecen a [0,10]? ¿Funciona?.
      • ¿Qué pasa si el primer valor ingresado es una letra?.

A continuación, se deja otra posible solución a la Consigna 2 para que lo analice.



      • Vemos que a medida que avanzamos en el materia, los programas se vuelven mas largos y complejos.
      • Ver que si tuviéramos que incorporar consideraciones para que no se ingresen notas negativas o fuera de [0,10] el programa adquiere mayor dificultad y se vuelve mas largo (más código).
      • Vemos que considerar TODAS las alternativas y prevenirse de ingresos no válidos hace mas complejo el código.
      • Respecto del punto anterior, algunas veces las consignas que se plantean, limitan los ingresos (ejemplo: a números reales), para buscar que el alumno SOLO use algún concepto a ser evaluado (ejemplo: "while")  y no se disperse con otros temas (ejemplo "try/except").
      • Vemos que hay muchas soluciones, para una consigna tan sencilla, no necesariamente infinitas pero probablemente más de 350 soluciones distintas pueden surgir.
      • En la materia no tenemos 350 alumnos, por lo que es SUGESTIVO que dos alumnos tengan la misma solución (copiar --> 😡).
      • Notar que cambiar el nombre de las variables sería un cambio cosmético y no un programa distinto, esto suelen hacer algunos alumnos que copian para DISFRAZAR el código que hizo otro y hacerlo pasar como propio.
      • En este caso es tan culpable el que copia como el que facilita el código para que otro lo copie, en los casos que se detectaron ambos alumnos han sido REPROBADOS 😳.