Python拓展——import匯入包之random隨機數和turtle海龜作圖(2)
hello大家好,某一天,一個叫小蒟蒻的人想起了這個網站,請把失蹤人口迴歸打在公屏上。。。
Q:為啥那麼久沒更新
A:因為(我懶)前一陣子小蒟蒻的主課不是很好,所以一直在學習+補課5555
PS:在寫這段話的時候是10月1日國慶節,所以小蒟蒻也在這裡祝大家節日快樂!
那話不多說了,進入正題
先來回顧一下上篇博文的內容吧,上次我們學習了Python中兩個包:random 和 turtle
random的幾個用法:
1、a = random.randint(1,10) # 在1~10之間隨機取一個整數賦值到 a 中
2、a = random.choice([1,2,3,4]) # 在幾個選定的值中隨機挑選一個賦值到 a 中
3、a = random.uniform(1,3) # 在1~3之間隨機取一個浮點數賦值到 a 中
turtle的幾個用法:
1、turtle.forward(100) # 海龜向前走100格
2、turtle.left(或者right)(90) # 海龜左(右)轉90度
3、turtle.done() # 完成作圖後保留作圖視窗
其實都很簡單的吧(*^▽^*)
這篇博文,我們要學習熟練應用 turtle 包!畫出這樣的效果:
哇啊啊啊!這什麼東西,看上去好複雜QAQ
複雜不可怕,小蒟蒻帶大家一步一步來,包學包會!
首先我們仔細觀察一下這個圖,其實是由很多正方形構成的!
我用紅筆勾出了其中一個:
勾的不太好,大家將就看一下吧。。。
不管怎麼說,這麼看應該很清楚了吧!
接著我們來讀一下程式碼:
import turtle num = int(input('你想畫幾個正方形(360的因數)')) color = input('什麼顏色(輸入red、blue、yellow、green等)') size = int(input('筆的粗細(1、2、3、4、5等)')) turtle.speed(100) turtle.pensize(size) turtle.pencolor(color) for i in range(num): for j in range(4): turtle.forward(100) turtle.left(90) turtle.right(360/num) turtle.done()
有人就要說了:小蒟蒻!我們才剛學多少,你就讓我們學這麼長的程式碼!還有沒有天理了!
欸,看著雖然長,但請你仔細讀一下,大多數是我們學過的呀!
實在忘記了也沒事,我們還是一行行來解讀!
import turtle 沒什麼問題,匯入 turtle 包
num = int(input('你想畫幾個正方形(360的因數)')) color = input('什麼顏色(輸入red、blue、yellow、green等)') size = int(input('筆的粗細(1、2、3、4、5等)'))
這就是最簡單的輸入,也沒問題
重點來了:
turtle.speed(100)
turtle.pensize(size)
turtle.pencolor(color)
這三行程式碼是新知識,我來分別說一下它們的作用:
1、turtle.speed(100) # 把畫圖速度設定為100
原先 turtle 畫圖的速度預設為1,畫完一張圖要等很長時間(1分鐘左右),這行程式碼就是加快畫圖速度
2、turtle.pensize(size) # 設定筆的粗細為 size ( size 為 int 型別)
Tips:size 為之前輸入進來的值
原先 turtle 畫圖筆的粗細預設為1,可以根據需求或美觀而改變
3、turtle.pencolor(color) # 設定筆的顏色為 color ( color 為 str 型別)
原先 turtle 畫圖畫筆顏色預設為黑色,也可以根據需求或美觀而改變
Tips:color 為之前輸入進來的值
現在大家明白了吧O(∩_∩)O
那我們繼續分析!
for i in range(num): for j in range(4): turtle.forward(100) turtle.left(90) turtle.right(360/num)
這裡是一個巢狀迴圈,我們先看裡面那層吧(#^.^#)
裡面這段程式碼的效果大家可以試著推一下,有條件的童鞋也可以放到自己的編譯器裡試一下!
其實,它的功能就是畫一個邊長為100的正方形!
裡面的迴圈看完了,那我們看外面那層
有可能又有小夥伴要問了:小蒟蒻小蒟蒻!這個 turtle.right(360/num) 是不是寫錯了?怎麼沒有和上面對齊啊?
誒,這可不是寫錯了,這是因為我不想讓這行程式碼在裡面的那層迴圈裡執行!
說白了,這行程式碼是歸外面那層迴圈管的,給大家畫個圖就明白了!
相信大家這樣應該能看懂了吧!
這些都不算什麼,最重要的是,我們要理解這個外層迴圈到底要幹什麼
首先迴圈 num 次,也就是畫 num 個正方形!
敲黑板,劃重點!!!
turtle.right(360/num) 為什麼括號裡是 360/num 呢?
這裡涉及到一個小學數學問題:我要畫 num 個正方形圍成360度,每兩個正方形之間差多少度呢?
答:360/num 度!
所以為什麼要這樣寫大家明白了吧ヾ(✿゚▽゚)ノ
那麼迴圈我們就也分析完了
turtle.done(),這個小蒟蒻就不多闡述了,之前的博文有詳細介紹!
最後給大家一個思考的問題:為什麼在輸入 num 的時候強調了必須是360的因數呢?
好了,今天的內容就到這裡啦,如果有什麼問題就在評論區寫出來,小蒟蒻看到後會第一時間回覆的!
如果覺得寫得不錯的話就點個贊再走吧,拜拜┏(^0^)┛