如何将用户输入作为浮点数?

时间:2016-01-14 18:26:09

标签: python python-2.7 input io

我正在运行Python 2.7.10。我正在处理的程序中有以下代码块。

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()

它的作用是提示用户输入项目和价格,然后将所有这些存储为键/值对,然后将该最终字典写入第二个文本文件。然而,在第5行,它似乎是唯一的输入类型,除了有一个字符串。我试图通过 float()包围 raw_input ,并尝试使额外的变量无济于事。我能够将raw_input包装在 int()中并且它可以工作,所以它把我扔了。

当我将第5行更改为库存[item] = float(raw_input('Price:'))时,我收到以下错误:

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: 

我必须对代码进行哪些更改,以便当用户在第5行输入数值时,它会保存到字典而不是字符串(当前)?

2 个答案:

答案 0 :(得分:5)

简短的回答是使用float(raw_input('Price: ')),但是编写一个方法来处理浮点数的输入(并在获得所需内容之前重试)可能会更好。

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

然后使用方法

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

答案 1 :(得分:0)

尝试使用我的代码。我刚做好,并开始在网上浏览那些人。 免责声明:我是在Python 3.7中实现的,因此不确定它是否可以解决您的问题。

#Get Input
User_Input_Number_Here = input ("Enter a number: ")
try:
#Try to convert input to Integer
   User_Input_Converted_Here = int(User_Input_Number_Here)
#It worked, now do whatever you want with it
   print("The number is: ", User_Input_Converted_Here)
except ValueError:
#Can't convert into Integer
    try:
#Try converting into float
       User_Input_Converted_Here = float(User_Input_Number_Here)
#It worked, now do whatever you want with it
       print("The number is: ", User_Input_Converted_Here)
    except ValueError:
#Can't convert into float either. Conclusion: User is dumb
#Give custom error message
       print("Are you by any chance...\nRetarded?")