2017-06-02 97 views
0
import turtle 
t=turtle.Turtle() 
wn=turtle.Screen() 
wn.setworldcoordinates(-300,-300,300,300) 



directions = {    #dictionary of directions given in file. 
'up': turtle.up, 
'down': turtle.down 
} 


with open('dino.txt', 'r') as dino: 
    for line in dino: 
    line, pixel = line.split()  #split line into two different directions. 

    if line in directions:#runs if within directions. 
     directions[line](pixel) 
    else: 
     raise()    #raises error if not within directions. 

我有这个文件标题为“dino.txt”有内部的方向,应该是在python乌龟图形中寻找恐龙。不过,我在执行读取文件并在Turtle图形中追踪图像的代码时遇到了很多麻烦。我上面写的代码打开了龟图形页面,但没有追踪任何东西。我希望在这里有人能够帮助我,或者指出如何在Python中通过阅读文本文件来实现龟图形设计。感谢您的任何帮助/反馈。蟒蛇龟图形打开文件

这里的文件“dino.txt”的内容:

UP 
-218 185 
DOWN 
-240 189 
-246 188 
-248 183 
-246 178 
-244 175 
-240 170 
-235 166 
-229 163 
-220 158 
-208 156 
-203 153 
-194 148 
-187 141 
-179 133 
-171 119 
-166 106 
-163 87 
-161 66 
-162 52 
-164 44 
-167 28 
-171 6 
-172 -15 
-171 -30 
-165 -46 
-156 -60 
-152 -67 
-152 -68 
UP 
-134 -61 
DOWN 
-145 -66 
-152 -78 
-152 -94 
-157 -109 
-157 -118 
-151 -128 
-146 -135 
-146 -136 
UP 
-97 -134 
DOWN 
-98 -138 
-97 -143 
-96 -157 
-96 -169 
-98 -183 
-104 -194 
-110 -203 
-114 -211 
-117 -220 
-120 -233 
-122 -243 
-123 -247 
-157 -248 
-157 -240 
-154 -234 
-154 -230 
-153 -229 
-149 -226 
-146 -223 
-145 -219 
-143 -214 
-142 -210 
-141 -203 
-139 -199 
-136 -192 
-132 -184 
-130 -179 
-132 -171 
-133 -162 
-134 -153 
-138 -145 
-143 -137 
-143 -132 
-142 -124 
-138 -112 
-134 -104 
-132 -102 
UP 
-97 -155 
DOWN 
-92 -151 
-91 -147 
-89 -142 
-89 -135 
-90 -129 
-90 -128 
UP 
-94 -170 
DOWN 
-83 -171 
-68 -174 
-47 -177 
-30 -172 
-15 -171 
-11 -170 
UP 
12 -96 
DOWN 
9 -109 
9 -127 
7 -140 
5 -157 
9 -164 
22 -176 
37 -204 
40 -209 
49 -220 
55 -229 
57 -235 
57 -238 
50 -239 
49 -241 
51 -248 
53 -249 
63 -245 
70 -243 
57 -249 
62 -250 
71 -250 
75 -250 
81 -250 
86 -248 
86 -242 
84 -232 
85 -226 
81 -221 
77 -211 
73 -205 
67 -196 
62 -187 
58 -180 
51 -171 
47 -164 
46 -153 
50 -141 
53 -130 
54 -124 
57 -112 
56 -102 
55 -98 
UP 
48 -164 
DOWN 
54 -158 
60 -146 
64 -136 
64 -131 
UP 
5 -152 
DOWN 
1 -150 
-4 -145 
-8 -138 
-14 -128 
-19 -119 
-17 -124 
UP 
21 -177 
DOWN 
14 -176 
7 -174 
-6 -174 
-14 -170 
-19 -166 
-20 -164 
UP 
-8 -173 
DOWN 
-8 -180 
-5 -189 
-4 -201 
-2 -211 
-1 -220 
-2 -231 
-5 -238 
-8 -241 
-9 -244 
-7 -249 
6 -247 
9 -248 
16 -247 
21 -246 
24 -241 
27 -234 
27 -226 
27 -219 
27 -209 
27 -202 
28 -193 
28 -188 
28 -184 
UP 
-60 -177 
DOWN 
-59 -186 
-57 -199 
-56 -211 
-59 -225 
-61 -233 
-65 -243 
-66 -245 
-73 -246 
-81 -246 
-84 -246 
-91 -245 
-91 -244 
-88 -231 
-87 -225 
-85 -218 
-85 -211 
-85 -203 
-85 -193 
-88 -185 
-89 -180 
-91 -175 
-92 -172 
-93 -170 
UP 
-154 -93 
DOWN 
-157 -87 
-162 -74 
-168 -66 
-172 -57 
-175 -49 
-178 -38 
-178 -26 
-178 -12 
-177 4 
-175 17 
-172 27 
-168 36 
-161 48 
-161 50 
UP 
-217 178 
DOWN 
-217 178 
-217 177 
-215 176 
-214 175 
-220 177 
-223 178 
-223 178 
-222 178 
UP 
-248 185 
DOWN 
-245 184 
-240 182 
-237 181 
-234 179 
-231 177 
-229 176 
-228 175 
-226 174 
-224 173 
-223 173 
-220 172 
-217 172 
-216 171 
-214 170 
-214 169 
UP 
-218 186 
DOWN 
-195 173 
-183 165 
-175 159 
-164 151 
-158 145 
-152 139 
-145 128 
-143 122 
-139 112 
-138 105 
-134 95 
-131 88 
-129 78 
-126 67 
-125 62 
-125 54 
-124 44 
-125 38 
-126 30 
-125 27 
-125 8 
-126 5 
-125 -9 
-122 -15 
-115 -25 
-109 -32 
-103 -39 
-95 -42 
-84 -45 
-72 -47 
-56 -48 
-41 -47 
-31 -46 
-18 -45 
-1 -44 
9 -43 
34 -45 
50 -52 
67 -61 
83 -68 
95 -80 
112 -97 
142 -115 
180 -132 
200 -146 
227 -159 
259 -175 
289 -185 
317 -189 
349 -190 
375 -191 
385 -192 
382 -196 
366 -199 
352 -204 
343 -204 
330 -205 
315 -209 
296 -212 
276 -214 
252 -208 
237 -202 
218 -197 
202 -193 
184 -187 
164 -179 
147 -173 
128 -168 
116 -164 
102 -160 
88 -158 
78 -159 
69 -162 
57 -164 
56 -165 
51 -165 
UP 
68 -144 
DOWN 
83 -143 
96 -141 
109 -139 
119 -146 
141 -150 
161 -155 
181 -163 
195 -169 
208 -179 
223 -187 
241 -191 
247 -193 
249 -194 
UP 
-6 -141 
DOWN 
-15 -146 
-29 -150 
-42 -154 
-51 -153 
-60 -152 
-60 -152 
UP 
-90 -134 
DOWN 
-85 -131 
-79 -128 
-78 -123 
-80 -115 
-82 -106 
-80 -101 
-76 -101 
UP 
-81 -132 
DOWN 
-76 -130 
-71 -126 
-72 -124 
UP 
43 -118 
DOWN 
44 -125 
47 -135 
41 -156 
37 -160 
40 -166 
47 -171 
47 -171 
UP 
-106 -153 
DOWN 
-107 -167 
-106 -178 
-109 -192 
-114 -198 
-116 -201 
+0

你上面的代码是不正确缩进 - 在Python缩进等于功能。在纳入建议之前,这可能是一个开始。比较你的文章和你的代码在文件中的显示方式 - 它们是否一样?或者在向我们展示你的工作到目前为止,有什么困惑吗? – cdlane

回答

0

这种逻辑是错误的:

line, pixel = line.split() 

如果数据是显示在你的问题的编辑的版本,考虑:

data = line.rstrip().split() 

你只有两种情况,无论是列表数据的长度为1,这意味着你有一个像一个方向或DOWN在data[0],或列表数据的长度是2,这意味着您有一个goto()的参数(在您首次将两个字符串转换为整数后)。而已。

如果您的原始文章中显示的数据更自由,那么您需要一次处理一个令牌的数据。取下一个数据项并通过int()将其转换为try子句。如果成功,理解为一个int下一个数据项,并使用都做了goto(),否则把当前数据项作为except条款的方向,因为它显然不是一个int

错误检查包括:数字唐无法正确转换为整数;方向不在directions字典中找不到。

要考虑的其他事项:将您的directions键更改为大写以匹配文件中的数据或自己明确控制案例;如果您以这种方式使用setworldcoordinates(),则可能会歪斜图像的纵横比 - 使您的窗口以(使用wn.setup(size, size)的任何尺寸)开始为正方形;你的最大虚拟的300坐标达不到您的数据:385

enter image description here

+0

感谢您的输入和更正,我很感激。然而,像下面提到的评论者一样,在“line,pixel = line.split()”中替换并没有为我追踪任何东西,并引发了一个错误,所以不知道为什么它不工作。如果你可以再次评论你是如何能够精确地描绘出那些非常感谢的图像。另外,当你说文件中的数字没有正确转换为整数时,我不确定在我的字典中究竟是什么或者如何解决这个问题(对编码来说很新颖)。再次感谢! – emordnilap

+0

@emordnilap,我的代码并不是为了解决你的问题,只是指出麻烦开始的地方。我的回答概述了你如何继续。你的'raise()'代码被破坏了,所以我会对它进行注释,直到你有了基本的工作,然后重新访问它为止。你没有跟进你的数据格式,它是现在显示的一行一行还是你原始文章中的斑点?我的回答不是一个快速解决方案,而是一些建议让你前进。我并不是说你的数字不会转换为整数,只是如果你添加错误检查,这是一个明显的测试。同上检查字典键。 – cdlane

+0

我改变了我的原始数据格式来模拟上面显示的逐行数据格式 – emordnilap