1. Pythoner 的花式浪漫,你會嗎?

        共 821字,需瀏覽 2分鐘

         ·

        2020-12-24 02:41

        文 |?閑歡

        來源:Python 技術(shù)「ID: pythonall」

        一年一度的圣誕節(jié)又要到了,對于這個重大的節(jié)日,今年的外國人可能比較難,還處在水深火熱之中,希望他們一切都趕快好起來。在我們國內(nèi),我們還可以像往年一樣正常地過節(jié),雖然是一個外國人的節(jié)日,但是每年在這個日子里,還是成就了不少鴛鴦的,也不失是一件好事。作為 Python 程序員,你還在送花、送蘋果、送口紅嗎?有沒有想過程序猿式的浪漫?本文就拋磚引玉,為大家提供一種思路,希望大家喜歡。

        思路和實(shí)現(xiàn)

        本文想通過 turtle 動態(tài)畫圖,向觀看對象呈現(xiàn)一個動態(tài)繪制禮物的過程。一提到圣誕節(jié),大家映入腦海中的肯定就是郁郁蔥蔥的綠色圣誕樹,如果只是一棵圣誕樹,未免也太平平無奇了,所以我準(zhǔn)備在圣誕樹的頂部加一顆愛心,來起到畫龍點(diǎn)睛的作用。

        我們從上往下畫這個動圖,所以第一步要畫的是愛心。我將愛心分為兩個半圓與一個正方形的組合,并且用粉紅色來著色,我們來看看具體實(shí)現(xiàn):

        def?loving_heart(r):
        ????l?=?2?*?r
        ????tur.left(45)
        ????tur.forward(l)
        ????tur.circle(r,?180)
        ????tur.right(90)
        ????tur.circle(r,?180)
        ????tur.forward(l)

        愛心畫完了,就要開始畫圣誕樹了,我們知道,圣誕樹從樹頂往下是一個對稱的錐形,這么規(guī)則的形狀,正是我們想要的,它簡化了我們程序的邏輯。我們先畫樹的主干,然后再畫小樹枝,小樹枝采用從上到下一層一層畫的模式,每一層左右對稱,并且畫法相同,采用遞歸的方式來實(shí)現(xiàn):


        #?樹函數(shù)(遞歸)
        def?tree(d,?s):
        ????if?d?<=?0:
        ????????return
        ????tur.forward(s)
        ????tree(d?-?1,?s?*?.8)
        ????tur.right(120)
        ????tree(d?-?3,?s?*?.5)
        ????tur.right(120)
        ????tree(d?-?3,?s?*?.5)
        ????tur.right(120)
        ????#?回退函數(shù)
        ????tur.backward(s)

        畫完這兩部分之后,我們的愛心圣誕樹就畫好了,但是我們不能就這樣結(jié)束,我們還需要加一句表白的語句或者祝福語(這個大家自由發(fā)揮啦),我這里就寫了一句“Merry Christmas”作為示例。

        整個作畫的主程序是這樣的:


        #?畫愛心部分
        tur.penup()
        #?設(shè)置起點(diǎn)位置
        tur.goto(0,?200)
        tur.pendown()
        #?設(shè)置畫筆顏色
        tur.pencolor('pink')
        tur.color('pink')
        #?對圖形進(jìn)行填充
        tur.begin_fill()
        #?執(zhí)行畫愛心函數(shù)
        loving_heart(20)
        tur.end_fill()

        #?畫樹部分
        n?=?100
        tur.speed('fastest')
        tur.right(225)
        tur.color("dark?green")
        tur.backward(n?*?4.8)
        tree(15,?n)
        tur.backward(n?/?5)
        tur.penup()
        tur.Turtle().screen.delay(2)
        tur.goto(80,?0)
        tur.pendown()
        tur.color("gold")
        tur.write("Merry?Christmas!",?font=("Times",?32,?"bold"))
        tur.hideturtle()

        作畫的過程我錄制了一下,以便大家看看效果:

        作畫完成后,最終的效果是這樣子的:

        總結(jié)

        本文以動態(tài)畫一棵愛心圣誕樹為例,為大家展現(xiàn)了程序猿式的浪漫,這個禮物的重點(diǎn)是要動態(tài)畫,展現(xiàn)出畫的過程,讓非程序員女生能夠感受到程序的神奇,而不是把最后的成品給她。當(dāng)然啦,大家可以根據(jù)這個思路自由發(fā)揮,給自己心愛的她進(jìn)行定制。反正我寫程序的過程被女朋友看到了,然后她在一旁發(fā)出“哇哇,原來程序員還可以這樣浪漫”的叫聲。為了大家我也是拼了,提前泄露了天機(jī),以至于我還需要再準(zhǔn)備一份禮物了,大家覺得這種無私奉獻(xiàn)的精神是不是值得點(diǎn)個“在看”呢?


        PS公號內(nèi)回復(fù)「Python」即可進(jìn)入Python 新手學(xué)習(xí)交流群,一起 100 天計劃!


        老規(guī)矩,兄弟們還記得么,右下角的 “在看” 點(diǎn)一下如果感覺文章內(nèi)容不錯的話,記得分享朋友圈讓更多的人知道!

        代碼獲取方式

        識別文末二維碼,回復(fù):201222


        瀏覽 57
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
          
          

            1. 国产乱子伦精品视频潮 | 国产V在线观看 | 农村少妇**毛片视频 | 99re6热在线视频精品观看 | 国产av无毛 |