Python例項 自動軌跡繪製

2022-07-06 00:42:13 字數 2185 閱讀 9913

需求:根據指令碼來繪製圖形

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,...