Python - duda ejercicio bucles python

 
Vista:
sin imagen de perfil

duda ejercicio bucles python

Publicado por víctor (7 intervenciones) el 14/11/2022 18:52:14
Tengo dudas en este ejercicio:

Implementar un programa que lea 5 números enteros y positivos y calcule la media de los números y
lo presenta con máximo 1 decimal. Cuando el usuario mete un numero negativo o otra entrada inválida,
hay que volver a preguntárselo. La lectura de los números la tienes que hacer dentro de un bucle.

Ejecuta los siguientes test cases para testear tu programa:
ejemplo de ejecución
>>> %Run
Introduzca un número: 3
Introduzca un número: 4
Introduzca un número: 0
Introduzca un número: 2
Introduzca un número: 10
La media de los 5 numeros es 19/5 = 3.8
>>> %Run
Introduzca un número: -2
Solo numeros positivos!
Introduzca un número: 2
Introduzca un número: 4
Introduzca un número: r
Entrada inválida
Introduzca un número: 7
Introduzca un número: 10
Introduzca un número: 0
La media de los 5 numeros es 23/5 = 4.6

Yo he escrito esto:
i = 0
acum = 0
for i in range (5):
numero=int(input("Introduzca un número: "))
try:
if numero >= 0:
i=i+1
acum = acum + numero
else:
print ('solo numeros positivos')
except:
print ('entrada inválida')
media = acum/i
print("La media de los 5 números es",acum,"/",i,"= {0:.1f}" .format(media))

pero me da error en dos cosas: cuando introduzco un valor string python me da error y no puedo continuar, y cuando introduzco valores negativos me los contabiliza, y se supone que me tendría que seguir pidiendo valores hasta que le de al programa 5 números enteros.

agradecería que alguien me ayudase por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

duda ejercicio bucles python

Publicado por Francisco Javier (313 intervenciones) el 14/11/2022 20:10:06
Buenas para que no te contabilice los negativos metí un bucle while hasta que me acumule 5 y solo sumo el acumulado en caso que me dé un número entero y positívo y con el try le hago except Valueerror para que tampoco contabiñlice


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/python
# -*- coding: utf-8 -*-
media=0
acumulado=0
while acumulado < 5:
    try:
        n=int(input('Introduzca un número: '))
        if n < 0:
            print('Solo numeros positivos!')
        elif n >= 0:
            media+=n
            acumulado+=1
    except ValueError:
        print('Entrada inválida')
print(f'La media de los {acumulado} numeros es {media}/5 = {round(media/5,1)}')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil

duda ejercicio bucles python

Publicado por víctor (7 intervenciones) el 14/11/2022 21:14:22
Mil gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar