GCSE计算:"无法将字符串转换为浮点数"

时间:2017-03-02 12:33:02

标签: python python-3.6

在此任务中,我们将创建一个文件,使用用户输入进行编辑并输出所述文件。对此的扩展是为列表创建平均值和总计,并使用此新数据写入/读取文件。但是,每当我运行它时,我都会一直收到此错误:

Traceback (most recent call last):
File "python", line 3, in <module>
ValueError: could not convert string to float: '12 13 14 15 16 17'

...即使我认为列表首先不是字符串值。请帮忙!代码如下:

myFile = open("userInput.txt", "wt")
myList = []
usrInput = float(input("Input numbers: "))
myList.append (usrInput)
myList.append (sum(myList)/len(myList))
for item in myList:
    myFile.write(item+"\n")
myFile = open("userInput.txt","rt")
myRead = myFile.read()
print(myRead)
myFile.close()

4 个答案:

答案 0 :(得分:0)

item

由于floatmyFile.write("{}\n".format(item)) ,因此您无法将其添加到字符串中。

myFile

会更好。

除此之外,您必须关闭myFile.close() # or file may not be flushed myFile = open("userInput.txt","rt") 才能重新打开它以进行阅读

Book book = new BookImpl()

答案 1 :(得分:0)

float()可以将表示数字的字符串转换为浮点数。

例如:"3"已转换为3.0

当你传递一串数字时,它无法分辨出另一个数字是什么。

例如:"3 4 50 200000 3.0E20"

如果要转换字符串中的所有数字,可能需要执行以下操作:

my_numbers = "3 4 5 6"
my_numbers = my_numbers.split()
my_floats = []
for num in my_numbers:
    my_floats.append(float(num))

结果为[3.0, 4.0, 5.0, 6.0]

有关此float的更多信息:https://docs.python.org/3/library/functions.html#float

有关此split的更多信息:https://docs.python.org/3/library/stdtypes.html#str.split

答案 2 :(得分:0)

你为什么不使用numpy?

import numpy
myFile = numpy.loadtxt("your file", delimiter = " ")

请注意,分隔符是空格。 必须先将数字分开,之后才能使用它们。

答案 3 :(得分:0)

您需要更改此行float(input("Input numbers: "))。在这里输入的是空格分隔的数字。所以你不能转换数字分隔的空格。您需要拆分所有空格然后转换。这是修改后的代码。有了这个,你还需要一些其他的改变。

myList = []
usrInput = map(float, input("Input numbers: ").split())
myList += usrInput
myList.append (sum(myList)/len(myList))

myFile = open("userInput.txt", "wt")
myFile.write("\n".join(map(str, myList)))

myFile = open("userInput.txt","rt")
myRead = myFile.read()
print(myRead)
myFile.close()