學習中參閱一些資料,發現用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 ...