初出茅廬——利用Python的Turtle庫繪製玫瑰花

(Turtle)🐢繪製Rose(🌹)

用Python繪製一朵玫瑰花(附源代碼)

要求:①電腦需配備Python3.xx的環境
②需要的模塊包 turtle(Python內置包)

Turtle(🐢)

個人接觸的第一個Python庫就是Turtle,業內Guido稱我們這類人爲:畫龜入門,也快過年了,學了這麼長時間的語言了,也該給自己另一個她拿程序寫個小東西,表達一下自己的愛慕之情,所以年前趕忙寫了這篇博客,希望闊以幫助大家,新年裏把這段代碼送給自己的另一個她,不要再讓外面傳程序員不懂浪漫熬,證明自己,程序員的浪漫是俗人無法理解的,奧裏給!

先讓你們酸一下,上一張成品圖

好不好看,觀衆姥爺說了算。

在這裏插入圖片描述
此圖應該是全網拿Python繪製最好看玫瑰花,自信一點說,自己動手翻閱博客,目前沒有找到闊以與之媲美的,當然好看是需要代價的,繁瑣的循環,500+行的代碼,計算起來,複雜程度不用我多說,所以個人推薦:Copy走自己玩一玩發給另一個她,儘量不要自己動手瞧;當然如果有鐵子想表達一下對另一個她的真心,闊以親自動手敲一遍。

完整源代碼

#套用的循環我已放入Shell命令行供大家參考改進。

'''
#      a+=
#        if i<:
#            left()
#        elif <i<:
#            left(1)
#    elif i >=:
#        pensize(a)
#        forward()
#        a-=
#        if <i<:
#            left()
#        elif <i<:
#            left()
# setheading(270)
# for i in range ():
#    if i < :
#        pensize(a)
#        forward()
'''
#環境配備:Python自帶的turtle庫
#Created on Nov 10, 2019
#@author: Lkang


from turtle import *
#設置繪製起點
setup (700,700)
#畫筆顏色
pencolor("red")
hideturtle()
penup()
goto(0,280)
pendown()
left(135)
speed(0)
#左側弧形繪製
a=0.2
for i in range (80):
    if i < 50:
        pensize(a)
        forward(2)
        a+=0.15
        if i<10:
            left(0.7)
        elif 10<i<24:
            left(1)
        elif 24<i<40:
            left(3)
        elif 40<i<50:
            left(4)
    elif i >=50:
        pensize(a)
        forward(2.2)
        a-=0.25
        if 50<i<65:
            left(6.7)
        elif 65<i<80:
            left(2)
setheading(0)
penup()
goto(40,305)
pendown()
left(145)
#右側弧形繪製
a=0.1
for i in range (100):
    if i < 60:
        pensize(a)
        forward(3)
        a+=0.15
        if i<10:
            left(0.8)
        elif 10<i<24:
            left(0.8)
        elif 24<i<40:
            left(1.7)
        elif 40<i<60:
            left(2.2)
    elif i >=60:
        pensize(a)
        forward(2.4)
        a-=0.15
        if 60<i<85:
            left(3.2)
        elif 85<i<90:
            left(4)
setheading(0)
penup()
goto(45,320)
pendown()
left(10)
a=0.1
for i in range (100):
    if i < 60:
        pensize(a)
        forward(3)
        a+=0.15
        if i<17:
            right(3.2)
        elif 17<i<20:
            right(3.5)
        elif 20<i<40:
            right(6.8)
        elif 40<i<50:
            right(0.6)
        elif 50<i<60:
            left(1)
    elif i >=60:
        pensize(a)
        forward(2.4)
        a-=0.16
        if 60<i<85:
            left(0.4)
        elif 85<i<90:
            left(1)
setheading(0)
penup()
goto(-135,265)
pendown()
left(160)
a=0.1
for i in range (120):
    if i < 60:
        pensize(a)
        forward(3)
        a+=0.15
        if i<10:
            left(2)
        elif 10<i<15:
            left(8)
        elif 15<i<35:
            left(6)
        elif 35<i<40:
            left(4)
        elif 40<i<60:
            left(1)
    elif i >=60:
        pensize(a)
        forward(3)
        a-=0.15
        if 60<i<90:
            right(0.4)
        elif 90<i<120:
            right(0.8)
setheading(0)
penup()
goto(80,250)
pendown()
left(245)
a=0.2
for i in range (80):
    if i < 40:
        pensize(a)
        forward(1.2)
        a+=0.15
        if i<15:
            left(0.6)
        elif 15<i<40:
            left(0.3)
    elif i >=40:
        pensize(a)
        forward(1.2)
        a-=0.15
        if 40<i<65:
            left(0.6)
        elif 65<i<80:
            left(0.35)
setheading(0)
penup()
goto(-150,195)
pendown()
left(300)
a=0.2
for i in range (80):
    if i < 40:
        pensize(a)
        forward(1.2)
        a+=0.16
        if i<15:
            right(0.6)
        elif 15<i<40:
            right(0.3)
    elif i >=40:
        pensize(a)
        forward(1.2)
        a-=0.16
        if 40<i<65:
            right(0.6)
        elif 65<i<80:
            right(0.35)
setheading(0)
penup()
goto(-205,225)
pendown()
left(194)
a=0.1
for i in range (100):
    if i < 50:
        pensize(a)
        forward(3)
        a+=0.15
        if i<10:
            left(7)
        elif 10<i<30:
            left(3)
        elif 30<i<50:
            left(0.1)
    elif i >=50:
        pensize(a)
        forward(3)
        a-=0.15
        if 50<i<80:
            right(0.3)
        elif 80<i<100:
            right(0.6)
setheading(0)
penup()
goto(110,280)
pendown()
left(6)
a=0.1
for i in range (120):
    if i < 60:
        pensize(a)
        forward(3)
        a+=0.15
        if i<10:
            right(4.5)
        elif 10<i<30:
            right(5)
        elif 30<i<60:
            right(0.1)
    elif i >=60:
        pensize(a)
        forward(3)
        a-=0.15
        if 50<i<80:
            left(0.6)
        elif 80<i<100:
            left(0.9)
setheading(0)
penup()
goto(-160,110)
pendown()
left(283)
a=0.2
for i in range (80):
    if i < 40:
        pensize(a)
        forward(2.4)
        a+=0.15
        if i<10:
            right(0.6)
        elif 15<i<40:
            right(0.1)
    elif i >=40:
        pensize(a)
        forward(2.4)
        a-=0.15
        if 40<i<65:
            left(2)
        elif 65<i<80:
            left(3)
setheading(0)
penup()
goto(90,155)
pendown()
left(258)
a=0.2
for i in range (80):
    if i < 40:
        pensize(a)
        forward(3)
        a+=0.15
        if i<10:
            left(0.8)
        elif 15<i<40:
            left(0.1)
    elif i >=40:
        pensize(a)
        forward(3)
        a-=0.15
        if 40<i<65:
            right(2)
        elif 65<i<80:
            right(3)
setheading(0)
penup()
goto(-60,-45)
pendown()
right(9)
a=0.2
for i in range (40):
    if i < 20:
        pensize(a)
        forward(1.3)
        a+=0.15
        if i<5:
            left(0.7)
        elif 5<i<20:
            left(0.4)
    elif i >=20:
        pensize(a)
        forward(1.3)
        a-=0.15
        if 20<i<35:
            left(0.7)
        elif 35<i<40:
            left(0.4)
setheading(0)
penup()
goto(-70,-55)
pencolor("green")
pendown()
right(170)
a=0.2
for i in range (80):
    if i <40 :
        pensize(a)
        forward(2)
        a+=0.15
        if i<25:
            right(0.5)
        elif 25<i<40:
            right(1)
    elif i >=40:
        pensize(a)
        forward(2.5)
        a-=0.15
        if 40<i<55:
            right(1)
        elif 55<i<70:
            right(2)
        elif 70<i<80:
            right(1)
setheading(270)
left(30)
a=0.2
for i in range (80):
    if i <40 :
        pensize(a)
        forward(2.5)
        a+=0.15
        if i<25:
            left(0.5)
        elif 25<i<40:
            left(1)
    elif i >=40:
        pensize(a)
        forward(3)
        a-=0.15
        if 40<i<55:
            left(2)
        elif 55<i<70:
            left(1.3)
        elif 70<i<80:
            left(1)
setheading(270)
penup()
goto(20,-55)
pendown()
left(65)
a=0.2
for i in range (60):
    if i <30 :
        pensize(a)
        forward(2)
        a+=0.15
        if i<15:
            left(1)
        elif 15<i<30:
            left(2)
    elif i >=30:
        pensize(a)
        forward(2.5)
        a-=0.15
        if 30<i<45:
            left(2)
        elif 45<i<50:
            left(2.5)
        elif 50<i<60:
            left(1.5)
setheading(270)
right(17)
a=0.2
for i in range (80):
    if i <40 :
        pensize(a)
        forward(2.2)
        a+=0.15
        if i<25:
            right(1)
        elif 25<i<40:
            right(2)
    elif i >=40:
        pensize(a)
        forward(2.5)
        a-=0.15
        if 40<i<55:
            right(2)
        elif 55<i<70:
            right(1.5)
        elif 70<i<80:
            right(0.6)
setheading(0)
penup()
pencolor("brown")
goto(-49,-90)
pendown()
right(89)
a=1
for i in range (120):
    if i < 60:
        pensize(a)
        forward(3.5)
        a+=0.08
    elif i >=60:
        pensize(a)
        forward(3.5)
        a-=0.08
setheading(0)
penup()
goto(-16,-70)
pendown()
right(91)
a=1
for i in range (120):
    if i < 60:
        pensize(a)
        forward(3.5)
        a+=0.08
    elif i >=60:
        pensize(a)
        forward(3.5)
        a-=0.08
setheading(0)

speed(1)
penup()
goto(-16,-150)
pendown()
pensize(3)
left(35)
forward(15)
setheading(0)
right(115)
forward(34)

setheading(180)
penup()
goto(-49,-250)
pendown()
pensize(3)
right(35)
forward(15)
setheading(180)
left(115)
forward(34)
input()
done

是不是讓繁雜的代碼整懵了,哈哈哈,總的來說就是不斷套用循環的思路去繪製,只是其中用到的數學知識比較多,所以吶,小夥伴們如果想玩轉Turtle庫得好好溫習下自己的數學嘍。
@Author:HaoXuan
#如果大家繪製中出現了問題,歡迎觀衆姥爺留言提出,我會逐一解答問題,提前祝大家新年快樂!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章