【发布时间】:2016-04-20 05:13:15
【问题描述】:
我正在运行 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 行更改为 inventory[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 行输入数值时,它会保存到字典中而不是字符串(当前)?
【问题讨论】:
-
inventory[item] = float(raw_input('Price: ')) -
^^^ 即便如此,使用浮点数来赚钱也是个坏主意。使用小数或整数
-
正如我所说,我试过了。它给了我一个错误。请不要投反对票,因为这是一个初学者提出的严肃问题,你甚至没有回答我的问题,而且我没有多少声望点可以失去。 @BobDylan
-
@JarrallBarnett Bob 的评论是正确的,使用
float()函数将其转换为浮点数。或者编写一个函数来接受来自输入的浮点数并使用它。 -
A) 我最初并没有对此投反对票(那个 DV 不是我的)。 B) 确实工作。问题一定是用户没有输入浮点数。手动铸造它并确保它实际上是一个浮点数是一种更好的方法。 C) 如果您在尝试执行此操作时收到错误,您还需要在此处显示错误,以便我们更好地帮助您。 D) 现在我将对此投反对票。
标签: python python-2.7 input io