11. Ejercicios resueltos

11.7. Contar y acumular hasta

Utilizando WHILE, se pide escribir un scritp que permita el ingreso de números hasta que se
ingrese el valor cero, condición del fin del programa.
Se debe tener presente que es posible que el usuario ingrese valores no numéricos en la ejecución
del script y se deberá prever esa situación pidiendo reingreso (try/except)
El scritp deberá:
  1.  Mostrar la cantidad total de números ingresados
  2.  Mostrar el máximo valor ingresado
  3.  Acumular los números ingresados menores al valor 5000.
  4.  Determinar en qué posición se cargó el valor cero (condición de fin del programa)
SOLUCIÓN SIN WHILE TRUE!!
#Sección donde inicializo las variables:
contador_de_numeros=0
posicion=0
acumulador=0 # Solo acumula los menores a 5000
ingreso=1#pongo un valor para ingresar al while
while ingreso:#Ver que NO es un while True
    try:#solo esta línea de ingreso es la que puede generar una excepción
        ingreso=float(input("Ingrese un valor, sale con 0:"))
    except ValueError:
        print("Error en tipo de datos...")
        continue #si salta una excepción voy a inicio del while
    else:#si NO hubo excepción continúo.
        #en este punto debo contar, acumular, etc.
        if contador_de_numeros==0:
            maximo=ingreso
        contador_de_numeros+=1
        if ingreso<5000:
            acumulador+=ingreso
        if ingreso>maximo:
            maximo=ingreso
#Fin de la carga, muestro lo solicitado.
print("Valor maximo:",maximo)
print("Cantidad total:",contador_de_numeros)
print("Posición en la que se ingreso el cero:",contador_de_numeros)
print("El acumulado de menores a 5000 es: ", acumulador)


SOLUCIÓN CON WHILE TRUE!!
#Sección donde inicializo las variables:
contador_de_numeros=0
posicion=0
acumulador=0 # Solo acumula los menores a 5000
while Trueo:#Ver que NO es un while True
    try:#solo esta línea de ingreso es la que puede generar una excepción
        ingreso=float(input("Ingrese un valor, sale con 0:"))
    except ValueError:
        print("Error en tipo de datos...")
        continue #si salta una excepción voy a inicio del while
    else:#si NO hubo excepción continúo.
        #en este punto debo contar, acumular, etc.
        if ingreso==0:#si ingresa 0
            break#Finalizo el while
        if contador_de_numeros==0:
            maximo=ingreso
        contador_de_numeros+=1
        if ingreso<5000:
            acumulador+=ingreso
        if ingreso>maximo:
            maximo=ingreso
#Fin de la carga, muestro lo solicitado.
print("Valor maximo:",maximo)
print("Cantidad total:",contador_de_numeros)
print("Posición en la que se ingreso el cero:",contador_de_numeros)
print("El acumulado de menores a 5000 es: ", acumulador)