write with raw_input print open python python-2.7 input io

python - with - ¿Cómo se toma una entrada de los usuarios como un flotador?



readline python (1)

La respuesta corta es usar float(raw_input(''Price: '')) , pero podría ser mejor escribir un método para manejar la entrada de flotadores (y vuelva a intentarlo hasta que obtenga lo que necesita).

def input_float(prompt): while True: try: return float(raw_input(prompt)) except ValueError: print(''That is not a valid number.'')

luego usa el método

inventory[item] = input_float(''Price: '')

Estoy ejecutando Python 2.7.10. Tengo el siguiente bloque de código de un programa en el que estoy trabajando.

with open(''inventory.txt'', ''r+'') as f: inventory = {} while True: item = raw_input(''Item: '') inventory[item] = raw_input(''Price: '') if item == '''': del inventory[''''] break inv = str(inventory) f.write(inv).rstrip() print inventory print inv print f.read()

Lo que hace es solicitarle al usuario un artículo y precio, y luego almacena todos esos pares de clave / valor y luego escribe ese diccionario final en un segundo archivo de texto. En la línea 5, sin embargo, parece ser el único tipo de entrada excepto que hay una cadena. Intenté rodear el raw_input con un float () y traté de hacer variables adicionales en vano. Pude envolver el raw_input en un int () y funciona así que me echó.

Cuando cambio la línea 5 al inventario [item] = float (raw_input (''Price:'')) aparece el siguiente error:

File "C:/Users/Jarrall/Desktop/store/script.py", line 5, in <module> inventory[item] = float(raw_input(''Price: '')) ValueError: could not convert string to float:

¿Qué debo cambiar sobre el código para que cuando un usuario introduce un valor numérico en la línea 5 lo guarde en el diccionario como tal en lugar de una cadena (actualmente)?