用turtle庫畫多邊形的方法小彙總

2021-10-03 08:13:18 字數 3249 閱讀 3877

學習中參閱一些資料,發現用turtle庫畫多邊形的方法有多種,其中有的思路比較巧妙.

from turtle import *

width(2)

n=eval(input('請輸入邊數'))

for i in range(n):

fd(100)

left(360/n)

done()

from turtle import *

import math #cos()cos()函式在該模組中

speed(0)

color('yellow','red')

begin_fill() #填色開始

while true:

forward(200)

left(-(180-36)) #可簡單證得五角形的5個內角和為180度,每個36度,負值表順時針方向.

if abs(pos()) < 1: #abs(a),計算向量a的絕對值, 此處用來判斷是否回到原點,終止迴圈.

break

end_fill() #填色結束 與begin_fill()成對出現,如沒有這句,則不能完成填色.

seth(72) #目的是使海龜朝向與圓半徑垂直.後面circle()為了畫五角星的外接圓

width(3)

circle(-(70/(math.cos(18)))) #本以為是200/2,結果發現只有70看上去還行.不知其所以然,請教大家.

ht() #ht() 即hideturtle()的簡寫, 隱藏海龜. 如果沒有這句,最後會有海龜(箭頭)留在圖上.

done()

解法1:

import turtle as t

t.pensize(2)

for i in range(9):

t.fd(150)

t.left(80) #720/9

一共9條邊,共2圈,每次左轉角度為80度(720/9)。

解法2.本解法優點是只需知道乙個引數(即多邊形內角),不用計算迴圈幾周,有多少邊

from turtle import *

while true:

forward(200)

left(180-100)

if abs(pos()) < 1: #abs(a),計算向量a的絕對值,這是判斷何時終止迴圈

break

done()

關於函式abs():參閱安裝後的\python37\lib\turtle.py**:

abs(pos())就是求點到原點的距離,(可相像勾股定理),也類求複數的模.

對於abs(pos())<1來判斷是否回到原點,適用於以原點為起點的畫圖.如果不是原點,則不能這樣來判斷.

from turtle import *

circle(150,steps=6) #此一句**即可,還有上面一句算兩句

'''說明:turtle.circle(radius, extent=none, steps=none)

引數radius -- 乙個數值

extent -- 乙個數值 (或 none)

steps -- 乙個整型數 (或 none)

繪製乙個 radius 指定半徑的圓。圓心在海龜左邊 radius 個單位;extent 為乙個夾角,用來決定繪製圓的一部分。如未指定 extent*則繪製整個圓。如果 *extent 不是完整圓周,則以當前畫筆位置為乙個端點繪製圓弧。如果 radius 為正值則朝逆時針方向繪製圓弧,否則朝順時針方向。最終海龜的朝向會依據 extent 的值而改變。

圓實際是以其內切正多邊形來近似表示的,其邊的數量由 steps 指定。如果未指定邊數則會自動確定。此方法也可用來繪製正多邊形。

'''>>> turtle.home()

複習:

turtle.pendown()

turtle.pd()

turtle.down()

畫筆落下 -- 移動時將畫線。

turtle.penup()

turtle.pu()

turtle.up()

畫筆抬起 -- 移動時不畫線。

turtle.pensize(width=none)

turtle.width(width=none)

引數width -- 乙個正數值

showturtle() | st() 顯示海龜

hideturtle() | ht() 隱藏海龜

isvisible() 是否可見

顏色控制

color() 顏色

pencolor() 畫筆顏色

fillcolor() 填充顏色

填充filling() 是否填充

begin_fill() 開始填充

end_fill() 結束填充

#數字型別

round(x,d) # 浮點數不確定尾數時,對x四捨五入,保留d位小數

z.real();z.imag() # 分別獲得複數的實部和虛部

x//y # 整除,x/y結果是浮點數

x**y # 冪運算,等同pow(x,y)

abs(x) #絕對值

divmod(x,y) #輸出(x//y,x%y)

pow(x,y[,z]) #輸出(x**y)%z

#字串

str(x) #轉換為字串

chr(u) #unicode轉換為字元

ord(x) #返回字元的unicode

str.lower();str.upper() # 全部字元小寫/大寫

"a,b,c".split(",") # 用逗號分割,返回['a','b','c']

"python".replace("n","n123.io") #返回python123.io

"python".center(20,"=") # 返回*****==python*****==

"=python=".strip("=") # 返回「python」

done = mainloop #在\python37\lib\turtle.py檔案裡有明確說明.

使用Turtle畫多邊形總結

說明 下方所有的繪製都是滿足一筆畫的,因為一筆畫才總結於此,但是我感覺turtle的意義應該在於起筆落筆和迴圈,加上筆者學的不精,全為個人看法,所以提前說明。原理 乙個正多邊形有n條邊,正多邊形的內角和為 n 2 180 left right 180 n 2 180,那麼每個角的度數則為 180 3...

利用turtle畫多個連續的正多邊形

利用python繪製如下影象 具體要求 從等邊三角形開始,至13邊行為止,連貫的畫出上述圖形,中間不可以有停頓。思考 很明顯這一題是利用turtle進行解答。經過思考,我們可以將畫圖的過程分成 轉角 和 前進 前進 不難,關鍵是如何 轉角 轉角 部分可以分成 乙個等邊圖形內 和 等邊圖形之間的轉化 ...

opencv畫多邊形框的函式

def draw text det res dt boxes,img path visualize the results of detection param dt boxes the boxes predicted by detection model param img path image ...