Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
ValueError en input
#1
Wink 
Buenas tardes, si alguien me puede ayudar con este codigo, apenas aprendiendo.

Código:
med1 =int(input())
med2 =int(input())

pacientes_atendidos = 0
pacientes1 = 0
pacientes2 = 0
contador = 0

while med1 > 0 and med2 > 0 :
    var1 =int(input())
    var2 =int(input())
    if(var1 < 91 and var2 < 63):
        med2= med2 - 12
        pacientes2= pacientes2 + 1
    elif(var1 >= 91 and var1 < 134 and var2 >= 63 and var2 < 77 ):
        pacientes_atendidos = pacientes_atendidos + 1
        contador= contador + 1
        continue
    elif(var1 >= 134 and var1< 162 and var2 >= 77 and var2< 105 ):
        pacientes_atendidos= pacientes_atendidos + 1
        contador= contador + 1
        continue
    elif(var1 >= 162 and var1 < 188 and var2 >= 105 and var2 < 119 ):   
        med1= med1 - 1
        pacientes1= pacientes1 + 1
    elif(var1 >= 188 and var1 < 172 and var2 >= 119 and var2 < 126 ):
        med1= med1 - 8
        pacientes1= pacientes1 + 1
    elif(var1 >= 201 and var1 < 214 and var2 >= 126 and var2 < 146 ):
        med1= med1 - 12
        pacientes1= pacientes1 + 1
    elif(var1 >= 214 and var2 >= 146 ):
        med1= med1 - 32
        pacientes1= pacientes1 + 1
    elif(var1 >= 152 and var2 < 79 ):
        med1= med1 - 20 
        pacientes1= pacientes1 + 1
   
    pacientes_atendidos= pacientes_atendidos + 1
    contador= contador + 1

if pacientes_atendidos != 0:
    print("{0}".format(pacientes_atendidos))
    porcentaje_pacientes1 = (float(pacientes1) / pacientes_atendidos) * 100
    print("{0} {1:.2f}%".format(pacientes1, porcentaje_pacientes1))
    porcentaje_pacientes2 = (float(pacientes2) / pacientes_atendidos) * 100
    print("{0} {1:.2f}%".format(pacientes2, porcentaje_pacientes2))
else:
    print(pacientes_atendidos)
    print("{0} {1:.2f}%".format(0, 0))
    print("{0} {1:.2f}%".format(0, 0))

que hace el codigo, pide que ingreses una cantidad  medicamentos 1 y medicamentos 2.

Luego pide ingresar dos variables de presion, sistolica(var1), diastolica(var2)

segun el rango que se ingrese este calcula la cantidad de medicamento que usa hasta agotar alguno de los dos medicamentos.


entonces en casi todas las pruebas que hago me funciona pero en una tengo un error.

en la que ingreso los siguientes datos

Cantidad medicamento 1 = 16
Cantidad medicamento 2 = 4
Presion1:150
Presion1:97
Presion1:185
Presion2:114
Presion1:171
Presion2:108
Presion1:157
Presion2: 99
Presion1: 119
Presion2: 63
Presion1: 194
Presion2: 124
Presion1: 142
Presion2: 100
Presion1: 201
Presion2: 143

cuando ingreso todos esos datos de pacientes, me genera este error:

Código:
Exception has occurred: ValueError
invalid literal for int() with base 10: ''
  File "/Users/jduarte/Phyton/reto2.py", line 10, in <module>
    var1 =int(input())

los datos esperados son los siguientes cuando ingreso los valores de entrada mencionados :
8
4 50.00%
0 0.00%

adjunte en un world el ejercicio,  no se pueden usar funciones, solo ciclos while y condiciones


Archivos adjuntos
.docx   Reto 2-1 .docx (Tamaño: 20,47 KB / Descargas: 1)
Responder
#2
Hola, gustoso te ayudo, pero si puedes, adjunta el .py así puedo ejecutarlo y probarlo en el ide.
Saludos.
Responder
#3
este es el archivo


Archivos adjuntos
.zip   reto2.py.zip (Tamaño: 611 bytes / Descargas: 1)
Responder
#4
Bueno, tengo la mala noticia que he reproducido el caso ingresando los valores que has proporcionado y no me ha arrojado error alguno. Lo que sí, no sale nunca del bucle.

Estos son los valores que pasaste e ingresé:
Cantidad medicamento 1 = 16
Cantidad medicamento 2 = 4
Presion1:150
Presion1:97
Presion1:185
Presion2:114
Presion1:171
Presion2:108
Presion1:157
Presion2: 99
Presion1: 119
Presion2: 63
Presion1: 194
Presion2: 124
Presion1: 142
Presion2: 100
Presion1: 201
Presion2: 143


¿Es el único caso en que da error?
Te lo pregunto porque el invalid literal for int() with base 10 que te está arrojando te lo está indicando en la línea 10 y todo apuntaría a indicar que hubo un error en la asignación de valor para esa variable (var1).
¿Has repetido la prueba repitiendo los valores?
Responder
#5
si, en parte encontré el error, resulta que cuando termina de ejecutar el ciclo el retorna a ingresar de nuevo las variables de entrada, lo que hice fue asignar una condición que se debe cumplir para que el continue en el clico por lo contrario termine y siga con los otros pasos.

pero la solución de un problema de lleva a otro jajaja, ahora cuando ingreso los datos de ingreso propuesto me arrojan otro resultado y no el esperado.

seguiré trabajando en el código y verificando que error tengo.

muchas gracias por el apoyo
Responder
#6
Me permito una simple observación.

Donde dice:

Código:
med1 =int(input())
med2 =int(input())

var1 =int(input())
var2 =int(input())

Yo pondría:

Código:
med1 =int(input("Introduzca el valor para el primer medicamento: "))
med2 =int(input("Introduzca el valor para el segundo medicamento: "))

var1 =int(input("Introduzca la presión sistólica: "))
var2 =int(input("Introduzca la presión diastólica: "))

Más que nada para orientar al usuario e indicarle el momento en el que el código le está demandando el ingreso de un dato.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)