1. 程式人生 > 其它 >Python拓展——import匯入包之random隨機數和turtle海龜作圖(2)

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^)┛