Error de seguimiento de Python: literal no válido para int () con base 10

Leí las respuestas a las preguntas de Python sobre errores de rastreo, por desgracia, no entiendo las respuestas proporcionadas. Cuando ejecuto el siguiente código, aparece un error de rastreo si el usuario no ingresa nada. ¿Cómo puedo evitarlo? Por favor dé solo respuestas específicas y cortas. ¡Gracias!

Error: Python Traceback Error: Invalid Literal for int() with base 10

def gold_room():
    print "This room is full of gold. How much do you take?"

    next = (raw_input(">>> "))
    how_much = int(next)

    if how_much < 50: 
        print "Nice, you're not greedy, you win!"
        exit(0)

    elif how_much > 50:
        print "You greedy bastard!"
        exit(0)
    else: 
        dead("Man, learn to type!")

preguntado el 08 de septiembre de 12 a las 09:09

El error es obvio cuando piensas en lo que está haciendo el código. ¿Por qué debería devolver int() con una cadena vacía devolver algo razonable? ¿Por qué? Explícalo por favor! -

Gracias, ¿Cómo debo cambiar el código para que al usuario en ese momento se le pregunte cada vez que no ingresa un valor para ingresar un valor?

Es mejor que el usuario no entre 50 exactamente tampoco, supongo... -

2 Respuestas

La razón por la que obtienes eso es cuando alguien simplemente presiona enter, el programa obtiene una cadena en blanco '', y luego el programa intenta convertir '' en int.

>>> int('')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''

Así que prueba esto:

try:
   how_much = int(next)
except ValueError:
   dead("Dude, enter a value!")

Respondido el 08 de Septiembre de 12 a las 09:09

Gracias, ¿Cómo debo cambiar el código para que al usuario en ese momento se le pregunte cada vez que no ingresa un valor para ingresar un valor? - user1586038

En extensión a la respuesta de Burhan Khalid, si desea avisar al usuario hasta que haya ingresado un número válido, haga esto:

how_much = None
while how_much is None:
    next = (raw_input(">>> "))
    try:
       how_much = int(next)
    except ValueError:
       print "Dude, enter a value!"

Respondido el 08 de Septiembre de 12 a las 10:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.