需求:根據指令碼來繪製圖形
python的 turtle 庫通過寫**的方式來繪圖,現在我們要根據資料來繪製軌跡。
使用資料指令碼時自動化最重要的第一步。例如,根據下面的幾組資料繪製出的圖形:
300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
繪製結果:
讀取檔案-->解析資料-->繪製圖形
實現思路:
資料介面的定義:
如下:
300,0,144,1,0,0
300,0,144,0,1,0
下面使用海龜繪圖體系來載入檔案和繪製圖形:
#autotracedraw.py
import turtle as t
t.title('自動軌跡繪製')
t.setup(800, 600, 0, 0)
t.pencolor("red")
t.pensize(5)
#資料讀取
datals =
f = open("data.txt")
for line in f:
line = line.replace("\n","")
f.close()
#自動繪製
for i in range(len(datals)):
t.pencolor(datals[i][3],datals[i][4],datals[i][5])
t.fd(datals[i][0])
if datals[i][1]:
t.right(datals[i][2])
else:
t.left(datals[i][2])
其中 data.txt 檔案的資料:
300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0
184,1,72,1,0,1
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,720,0,0,0
對上面部分**的詳細講解:
for line in f:
line = line.replace("\n","")
print(datals)
f.close()
line = line.replace("\n","") 將檔案最後的換行符轉換為空字串,去掉換行的資訊,然後再賦給 line
此時 line 的資訊儲存的是我們定義的每一行的資料介面的值,我們需要將資料介面的值進行分隔、處理並提取其中的資訊。
使用 for line in f 拿到的是字串,但是我們希望得到的是數字。此時我們該怎麼做?
由於這個字串中的每個數字之間用逗號 "," 進行分隔,可以使用 line.split() 並使用逗號作為分隔符,將這樣乙個字串分隔成若干個字串。split() 函式更多解釋請看:
map函式:將第乙個引數的功能作用於第二個引數的每乙個元素。簡單地說就是對乙個列表或者乙個集合,這樣的組合資料型別的每乙個元素,都執行一次第乙個引數所對應的函式。map()函式更多解釋請看:
eval函式:將乙個字串的兩側的引號去掉。eval函式更多解釋請看:
理解方法思維
應用問題擴充套件
以上內容資料均**於中國大學mooc網-北京理工大學python語言程式設計課程
例項 自動軌跡繪製
讀取乙個檔案,解析其中資料,繪製乙個圖形 1 定義資料檔案格式 介面 2 編寫程式,根據檔案介面解析引數繪製圖形 3 編制資料檔案 自動軌跡繪製 t.setup 800,600,0,0 t.pencolor red t.pensize 5 資料讀取 datals f open data.txt fo...
Python例項11 自動軌跡繪製
需求 根據指令碼來繪製圖形 不是寫 而是寫資料繪製軌跡 資料指令碼是自動化最重要的第一步 基本思路 定義資料檔案格式 介面 編寫程式,根據檔案介面解析引數繪製圖形 編制資料檔案 autotracedraw.py import turtle as t t.title 自動軌跡繪製 t.setup 80...
Python自動繪製軌跡
使用資料自動繪製軌跡 資料如下 300,0,144,1,0,0 300,0,144,0,1,0 300,0,144,0,0,1 300,0,144,1,1,0 300,0,108,0,1,1 184,0,72,1,0,1 184,0,72,0,0,0 184,0,72,0,0,0 184,0,72,...