我试图创建一个从测试文件(coordinates.txt)读取行的程序,并将每隔一行设置为(x,y)。它正在运行它应该如何运行,但在执行完毕后给我一个错误。
以下是所有事情的榜样:http://pastie.org/10503111
答案 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)
您尝试将换行符或空字符串(或其他一些空格)转换为浮点数。您有两个相关问题(和另一个错误):
line
的值,因此您的循环永远不会终止。line
,您的while
循环也只检查下一行,但是您尝试读取两个行每次迭代。如果你有一个奇数行,你就会敬酒(因为最后一行会检查好,但是你会尝试读取另一行行,而你#&# 39;爆炸)。'\n'
,换行符字符)无法转换。要检查您是否有一个有用的行,您可以尝试while line.strip():
代替您的循环。这样一旦你到达一个空的(或语义空的)线,你就会停止。但所有这些都是解决问题的一种愚蠢而漫长的方式。更好的方法可能是拥抱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.