Python中的文件处理-浮动> Str错误

时间:2019-07-10 12:24:58

标签: python

我正在用Python编写骰子游戏,程序结束时,它在单独的行中写入前5个得分,并在外部文件中记录了玩家的名字。我已经将此代码编写在一个单独的文件中进行测试,但是运行它时出现以下错误:

    filename.write (var)
TypeError: must be str, not float

这是我处理文件的源代码。

L = [29.4, 29.2, 1.4, 2.9, 2.3]
print (L)
x = len (L)
filename = open ('Scores.txt','rt')
filename.close
if x == 5:
    for i in range (0,5):
        var = (L[i])
        print(var)
        filename.write (var)
    filename.close

如果有人可以提供帮助,将不胜感激:)

3 个答案:

答案 0 :(得分:1)

要回答您的问题,并还要清理代码。...

您可以使用str()运算符将项目转换为字符串。

filename.write(str(var))

此外,使用with命令打开文件被认为是标准且更安全。它为您处理异常,并自动关闭文件。

此外,遍历列表的索引被认为是非Python的。最好执行for item in list,这样可以为您提供项目,而无需进行列表访问(list[i])

因此,最终,更干净的版本将如下所示:

L = [29.4, 29.2, 1.4, 2.9, 2.3]
print(L)
with open('Scores.txt','w') as filename:
    for item in L[:5]: #For each item in the first 5 items
        print(item)
        filename.write(str(item))

答案 1 :(得分:0)

您需要将var转换为字符串:

filename.write(str(var))

答案 2 :(得分:0)

您需要使用str(L [i])

将浮点数转换为字符串
L = [29.4, 29.2, 1.4, 2.9, 2.3]
print (L)
x = len (L)
filename = open ('Scores.txt','rt')
if x == 5:
    for i in range (0,5):
        var = (str(L[i]))
        print(var)
        filename.write (var)
    filename.close()

此外,filename.close是一种方法,您需要在括号中调用它

请注意,使用with陈述是更标准的做法

L = [29.4, 29.2, 1.4, 2.9, 2.3]
print (L)
x = len (L)
with open ('Scores.txt','rt') as filename:
    if x == 5:
        for i in range (0,5):
            var = (str(L[i]))
            print(var)
            filename.write (var)

那样,即使有任何异常,python也会自动关闭文件