日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python海龟绘图圆形_python之海龟绘图

發(fā)布時間:2025/3/11 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python海龟绘图圆形_python之海龟绘图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 基本功能介紹

在海龜作圖中,我們可以編寫指令讓一個虛擬的(想象中的)海龜在屏幕上來回移動。這個海龜帶著一只鋼筆,我們可以讓海龜無論移動到哪都使用這只鋼筆來繪制線條。通過編寫代碼,以各種很酷的模式移動海龜,我們可以繪制出令人驚奇的圖片。使用海龜作圖,我們不僅能夠只用幾行代碼就創(chuàng)建出令人印象深刻的視覺效果,而且還可以跟隨海龜看看每行代碼如何影響到它的移動。這能夠幫助我們理解代碼的邏輯。所以海龜作圖也常被用作新手學(xué)習(xí) Python 的一種方式。

1.1 Turtle motion (運動控制)

本節(jié)中包含了 運動控制 中常用的一些函數(shù)

turtle.goto(x,y)

畫筆定位到坐標(x,y)

turtle.forward(distance)

向正方向運動 distance 長的距離

turtle.backward(distance)

向負方向運動 distance 長的距離

turtle.right(angle)

向右偏 angle 度

turtle.left(angle)

向左偏 angle 度

turtle.home()

回到原點

turtle.circle(radius, extent=None, steps=None)

畫圓形 radius 為半徑,extent 為圓的角度

turtle.speed(speed)

以 speed 速度運動

看到這么多函數(shù)肯定已經(jīng)頭大了,我們以例題來講解。

首先畫一個邊長為100的正方形,然后再以半徑為50畫出其3/4圓。

#控制畫筆的速度

turtle.speed(5)#將畫筆定位到原點

turtle.goto(0,0)#從原點開始,畫出一個邊長為100的正方形

for i in range(4):#正向運動 100 的距離

turtle.forward(100)#向右偏 90 度

turtle.right(90)#將畫筆定位到原點

turtle.home()#畫出一個半徑為100,占3/4的圓

turtle.circle(50,270)

結(jié)果:

1.2 Pen control (畫筆控制)

本節(jié)包含了對畫筆的控制函數(shù),常用的如下:

turtle.pendown()

落筆,在此狀態(tài)下會畫出運動的軌跡

turtle.pendown()

起筆,在此狀態(tài)下不會畫出運動的軌跡

turtle.pensize(width=None)

畫筆粗細

turtle.pencolor(*args)

畫筆顏色

turtle.fillcolor(*args)

填充顏色

turtle.begin_fill()

開始填充

turtle.end_fill()

結(jié)束填充

turtle.write(arg, move=False, align=”left”, font=(“Arial”, 8, “normal”))

寫文字

同樣,我們以一個例題來講解。

畫一個正方形并填充,最后寫一些文字

#控制畫筆顏色

turtle.pencolor('red')#落筆

turtle.pendown()#設(shè)置填充顏色

turtle.fillcolor('blue')#開始填充

turtle.begin_fill()#從原點開始,畫出一個邊長為100的正方形

for i in range(4):#正向運動 100 的距離

turtle.forward(200)#向右偏 90 度

turtle.right(90)#結(jié)束填充

turtle.end_fill()

turtle.penup()

turtle.goto(100,-100)

turtle.write('Crossin編程教室')

最后的結(jié)果是這樣

同時,我們還可以設(shè)置畫筆打粗細、畫筆的速度等屬性,

1.3 Window control (視窗控制)

這里有兩個常用的函數(shù)

turtle.bgcolor(*args)

設(shè)置背景顏色

turtle.bgpic(picname=None)

背景圖片填充

設(shè)置代碼如下

turtle.bgcolor('red')

turtle.bgpic(r'yourpic.png')

2. 海龜繪圖實例

我們用幾個簡單的例子講解海龜繪圖的用法。

2.1 用正方形畫圓

importturtlefor i in range(360):

turtle.setheading(i)for i in range(4):

turtle.forward(100)

turtle.left(90)

360 個正方形每隔 1 度排列,短短幾行代碼可以生成一個漂亮規(guī)則的圖形。

2.2 紅色的五角星

使用填充功能畫出一個大紅星

importturtle

turtle.color('red','red')

turtle.begin_fill()for i in range(5):

turtle.forward(100)

turtle.right(144)

turtle.end_fill()

結(jié)果如圖:

動態(tài)時鐘

#coding=utf-8

importturtlefrom datetime import *

#抬起畫筆,向前運動一段距離放下

defSkip(step):

turtle.penup()

turtle.forward(step)

turtle.pendown()defmkHand(name, length):#注冊Turtle形狀,建立表針Turtle

turtle.reset()

Skip(-length * 0.1)#開始記錄多邊形的頂點。當(dāng)前的烏龜位置是多邊形的第一個頂點。

turtle.begin_poly()

turtle.forward(length* 1.1)#停止記錄多邊形的頂點。當(dāng)前的烏龜位置是多邊形的最后一個頂點。將與第一個頂點相連。

turtle.end_poly()#返回最后記錄的多邊形。

handForm =turtle.get_poly()

turtle.register_shape(name, handForm)defInit():globalsecHand, minHand, hurHand, printer#重置Turtle指向北

turtle.mode("logo")#建立三個表針Turtle并初始化

mkHand("secHand", 135)

mkHand("minHand", 125)

mkHand("hurHand", 90)

secHand=turtle.Turtle()

secHand.shape("secHand")

minHand=turtle.Turtle()

minHand.shape("minHand")

hurHand=turtle.Turtle()

hurHand.shape("hurHand")for hand insecHand, minHand, hurHand:

hand.shapesize(1, 1, 3)

hand.speed(0)#建立輸出文字Turtle

printer =turtle.Turtle()#隱藏畫筆的turtle形狀

printer.hideturtle()

printer.penup()defSetupClock(radius):#建立表的外框

turtle.reset()

turtle.pensize(7)for i in range(60):

Skip(radius)if i % 5 ==0:

turtle.forward(20)

Skip(-radius - 20)

Skip(radius+ 20)if i ==0:

turtle.write(int(12), align="center", font=("Courier", 14, "bold"))elif i == 30:

Skip(25)

turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))

Skip(-25)elif (i == 25 or i == 35):

Skip(20)

turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))

Skip(-20)else:

turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))

Skip(-radius - 20)else:

turtle.dot(5)

Skip(-radius)

turtle.right(6)defWeek(t):

week= ["星期一", "星期二", "星期三","星期四", "星期五", "星期六", "星期日"]returnweek[t.weekday()]defDate(t):

y=t.year

m=t.month

d=t.dayreturn "%s %d%d" %(y, m, d)defTick():#繪制表針的動態(tài)顯示

t =datetime.today()

second= t.second + t.microsecond * 0.000001minute= t.minute + second / 60.0hour= t.hour + minute / 60.0secHand.setheading(6 *second)

minHand.setheading(6 *minute)

hurHand.setheading(30 *hour)

turtle.tracer(False)

printer.forward(65)

printer.write(Week(t), align="center",

font=("Courier", 14, "bold"))

printer.back(130)

printer.write(Date(t), align="center",

font=("Courier", 14, "bold"))

printer.home()

turtle.tracer(True)#100ms后繼續(xù)調(diào)用tick

turtle.ontimer(Tick, 100)defmain():#打開/關(guān)閉龜動畫,并為更新圖紙設(shè)置延遲。

turtle.tracer(False)

Init()

SetupClock(160)

turtle.tracer(True)

Tick()

turtle.mainloop()if __name__ == "__main__":

main()

結(jié)果是一個動態(tài)的時鐘,下圖只是一個截圖

總結(jié)

以上是生活随笔為你收集整理的python海龟绘图圆形_python之海龟绘图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。