Python中Turtle庫(kù)改變畫(huà)筆(海龜)方向的兩種方法總結(jié)
引言:
本文是學(xué)習(xí)Turtle庫(kù)時(shí),發(fā)現(xiàn)兩種方法都能改變畫(huà)筆的方向,但二者又不是完全相同,故對(duì)其加以辨析總結(jié)到此,在本文你將收獲:
1.兩種改變畫(huà)筆方向的方法
2.矩形的繪制,等邊三角形的繪制
3.兩種方法的辨析
使用left right改變畫(huà)筆方向
默認(rèn)畫(huà)筆的方向是向右,使用以下代碼就能發(fā)現(xiàn)
import turtle turtle.forward(100) turtle.mainloop()
要是我們想改變方向呢?
turtle.left(angle)
turtle.lt(angle)
turtle.right(angle)
turtle.rt(angle)在turtle庫(kù)中提供了簡(jiǎn)寫(xiě)的方法 幾乎每種方法都有更簡(jiǎn)單的等效寫(xiě)法
在上面的兩個(gè)方法中,傳入的參數(shù)是整數(shù)和浮點(diǎn)數(shù)
單位默認(rèn)為角度但可以通過(guò)degrees() 和 radians() 函數(shù)改變?cè)O(shè)置
import turtle turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.mainloop()
更簡(jiǎn)單的寫(xiě)法
from turtle import *
for i in range(4):
fd(100)
lt(90)
mainloop()使用setheading改變畫(huà)筆方向
依舊使用官方文檔
turtle.setheading(to_angle)
turtle.seth(to_angle)to_angle是要到的那個(gè)角度,與angle一樣傳入整數(shù)或者浮點(diǎn)數(shù),使用seth或者setheading相當(dāng)于在坐標(biāo)系操作,角度是固定的
后面會(huì)詳細(xì)講解
如果我們把left改為Sethheading 結(jié)果會(huì)是怎樣的呢?
from turtle import *
for i in range(4):
fd(100)
seth(90)
mainloop()最終變成了這樣

就兩種結(jié)果的比較來(lái)看。Setheading繪制的矩形的時(shí)候,本應(yīng)該讓他轉(zhuǎn)彎的命令讓他停到了原地.
這是為什么呢?讓我們?cè)倩氐焦俜轿臋n:

在setheading修改方向時(shí),每一個(gè)角度是一個(gè)確切的方向,90度就是以畫(huà)筆位置為坐標(biāo)原點(diǎn)的北方,還記得傳入的參數(shù)名字是什么嗎?to_angle == 要到達(dá)的角度 在我們用sethading畫(huà)矩形的例子中,每一次循環(huán)都是將烏龜指向北方前進(jìn)100,所以才出現(xiàn)了意想不到結(jié)果。
二者的區(qū)別到底是什么呢?
如果一定要我舉一個(gè)生活中的例子,我想指南針(sethheading)和我們集合時(shí)的向左(left)向右(right)轉(zhuǎn)能在一定程度上說(shuō)明他們的區(qū)別
向左向右轉(zhuǎn)參考的是我們本身的位置,指南針指向的是永遠(yuǎn)不變的南方
指南針的南方是根據(jù)磁場(chǎng)劃分的,setheading的南方是根據(jù)角度劃分的
向右轉(zhuǎn)是根據(jù)我們的右邊和左邊轉(zhuǎn)的,left/right是根據(jù)我們的畫(huà)筆(箭頭)的左右劃分的
如果你不喜歡這種不是很?chē)?yán)謹(jǐn)?shù)念?lèi)比,那讓我們從更為嚴(yán)謹(jǐn)?shù)慕嵌热ヌ接懸幌逻@個(gè)問(wèn)題
setheading是以畫(huà)筆位置為坐標(biāo)原點(diǎn),建立直角坐標(biāo)系
left是以畫(huà)筆位置為原點(diǎn)建立極坐標(biāo)系
三角實(shí)例
讓我們從實(shí)例出發(fā)了解一下這個(gè)問(wèn)題:繪制一個(gè)三角形
畫(huà)一個(gè)三角形可以有很多種方法,如果我們想通過(guò)這個(gè)例子探討兩個(gè)改變方法的異同,我們需要做的是讓變量相對(duì)來(lái)說(shuō)更少:
1.我們的起點(diǎn)要相同
2.我們繪制的流程要相同
3.我們使用的不同之處應(yīng)該只有改變方向時(shí)使用的方法
繪制流程:
1.從默認(rèn)原點(diǎn)前進(jìn)100
2.朝左方旋轉(zhuǎn)前進(jìn)100
3.朝左下旋轉(zhuǎn)前進(jìn)100
代碼如下:
from turtle import * //第一種方法 fd(100) left(120) fd(100) left(120) fd(100) //第二種方法 fd(100) setheading(120) fd(100) setheading(240) fd(100)
第一種方法在頂點(diǎn)位置時(shí)旋轉(zhuǎn)角度

第二種方法在頂點(diǎn)旋轉(zhuǎn)角度

總結(jié)
到此這篇關(guān)于Python中Turtle庫(kù)改變畫(huà)筆(海龜)方向的兩種方法的文章就介紹到這了,更多相關(guān)Python Turtle庫(kù)改畫(huà)筆方向內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django開(kāi)發(fā)中使用Ueditor上傳圖片遇到的坑及解決
在Django開(kāi)發(fā)中使用Ueditor上傳圖片時(shí),可能會(huì)遇到后端配置不正確的問(wèn)題,建議在實(shí)例化Ueditor后加上serverUrl,這可以在Chrome的F12工具中查看請(qǐng)求的后端配置項(xiàng),此外,如果需要修改上傳路徑,可以在配置文件中更改路徑,并調(diào)整view.py中的代碼來(lái)管理上傳文件2024-09-09
使用Python統(tǒng)計(jì)相同像素值個(gè)數(shù)
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)統(tǒng)計(jì)相同像素值個(gè)數(shù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01
解決python 自動(dòng)安裝缺少模塊的問(wèn)題
今天小編就為大家分享一篇解決python 自動(dòng)安裝缺少模塊的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Python?OpenCV?Canny邊緣檢測(cè)算法的原理實(shí)現(xiàn)詳解
這篇文章主要介紹了Python?OpenCV?Canny邊緣檢測(cè)算法的原理實(shí)現(xiàn)詳解,由于邊緣檢測(cè)對(duì)噪聲敏感,因此對(duì)圖像應(yīng)用高斯平滑以幫助減少噪聲,具體詳情需要的小伙伴可以參考一下2022-07-07
解決pytorch rnn 變長(zhǎng)輸入序列的問(wèn)題
這篇文章主要介紹了解決pytorch rnn 變長(zhǎng)輸入序列的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
python之ImportError:模塊引入異常問(wèn)題
這篇文章主要介紹了python之ImportError:模塊引入異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
利用python在Word文檔中創(chuàng)建和執(zhí)行條件郵件合并
郵件合并域和IF域是Word文檔中兩種非常實(shí)用的域,前者可以用來(lái)進(jìn)行郵件合并,根據(jù)數(shù)據(jù)批量創(chuàng)建定制的Word文檔,本文講介紹如何使用Python在Word文檔中創(chuàng)建條件郵件合并域以及執(zhí)行條件郵件合并,需要的朋友可以參考下2024-08-08

