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