得到一个"值错误:",不知道如何解决它 - Python 3.4

时间:2015-10-24 02:57:31

标签: python

我试图创建一个从测试文件(coordinates.txt)读取行的程序,并将每隔一行设置为(x,y)。它正在运行它应该如何运行,但在执行完毕后给我一个错误。

以下是所有事情的榜样:http://pastie.org/10503111

2 个答案:

答案 0 :(得分:0)

您的问题是,readline功能会保留' \ n' (行中的新行字符)。您可以通过使用字符串变量的数组索引来解决此问题。例如,float(x [: - 1])将省略字符串末尾的换行符并消除错误。

<强>校正 试试这段代码:

x = file.readline().strip()
y = file.readline().strip()
while (x != '' and y != ''):
    turtle.penup()
    turtle.setpos(float(x), float(y))
    turtle.pendown()
    turtle.dot(10)
    x = file.readline().strip()
    y = file.readline().strip()

答案 1 :(得分:0)

您尝试将换行符或空字符串(或其他一些空格)转换为浮点数。您有两个相关问题(和另一个错误):

  1. 您永远不会更改line的值,因此您的循环永远不会终止。
  2. 即使您按照自己的方式设置line,您的while循环也只检查下一行,但是您尝试读取两个行每次迭代。如果你有一个奇数行,你就会敬酒(因为最后一行会检查好,但是你会尝试读取另一行行,而你#&# 39;爆炸)。
  3. 您的循环(修复后)将确保您读取的下一行不是严格为空,它仍然可以包含空白字符(例如'\n',换行符字符)无法转换。要检查您是否有一个有用的行,您可以尝试while line.strip():代替您的循环。这样一旦你到达一个空的(或语义空的)线,你就会停止。
  4. 但所有这些都是解决问题的一种愚蠢而漫长的方式。更好的方法可能是拥抱readlines()来创建文件中所有行的列表,然后处理它们而不必担心文件IO会妨碍您的逻辑。

    all_lines = file.readlines()  # Nice list of all the lines in the file.
    # Now do whatever you want with your easily-accessible lines of text.