Completing the response of @PatricioMoracho and in relation to your comment on it, if you want the user to define the number of data to enter you have two simple options:
-
Ask the user previously to enter the number of data you want to enter and pass it to range
:
n = int(input("¿Cuántos datos dese ingresar? "))
datos = [float(input("Dígame su peso en kg: ")) for _ in range(n)]
-
Change the for
for a while
that is broken based on an exit condition that the user can provide, for example enter data until one of them has x value or that an empty string is entered:
datos = []
dato = input("Dígame su peso en kg: ")
while dato:
datos.append(float(dato))
dato = input("Dígame su peso en kg: ")
In this case the user can enter data indefinitely (while there is available memory to be strict) until you enter an empty string, at which point the cycle is broken.
If you want to validate the entry (for example, to prevent anything that is not a positive number from being entered) and also to prevent the program from ending with an exception if the casting at float
is not possible, you can use a accessory function:
def ingresar_peso():
while True:
try:
cad = input("Dígame su peso en kg: ")
if not cad:
return None
peso = float(cad)
if peso < 0:
raise ValueError()
return peso
except:
print("Error, el peso debe ser un número positivo.")
continue
datos = []
dato = ingresar_peso()
while dato:
datos.append(float(dato))
dato = ingresar_peso()
Execution example:
Dígame su peso en kg: 56
Dígame su peso en kg: dadda
Error, el peso debe ser un número positivo.
Dígame su peso en kg: 81
Dígame su peso en kg: -55
Error, el peso debe ser un número positivo.
Dígame su peso en kg: 73
Dígame su peso en kg:
>>> datos
[56.0, 81.0, 73.0]