啥是佩奇?爷爷,我用Python给你画一个
導讀:今天,你一定被《啥是佩奇》這支廣告片刷屏了。
佩奇明明是個喜劇角色,卻看哭了所有人。
作者:丁彥軍
來源:戀習Python(ID:sldata2017)
▲《啥是佩奇》???
快過年了,在農村爺爺給城里的小孫子打電話,小孫子說想要“佩奇”。
為了滿足小孫子的愿望,爺爺開始滿村子找佩奇。
開片爺爺在電話這頭的一段話就很抓人心,全世界的爺爺都是這樣疼孫兒的,一下子就讓觀眾有共情的心理。
一句“什么是佩奇?”鋪墊了爺爺接下來的一段尋找佩奇之路,最后爺爺找到的佩奇骨絡清奇,卻是筆者見過的全世界最可愛的小豬佩奇!
不知道大家看完什么感覺,反正我看完是哭了。我看網友們也紛紛留言,說自己哭笑兩重奏。
看著爺爺滿村子找佩奇,我有點心疼了。為此我想用純粹的Python來告訴爺爺,啥是佩奇?
先看看效果視頻:
基本思路:選好畫板大小,設置好畫筆顏色,粗細,定位好位置,依次畫鼻子,頭、耳朵,眼睛,腮,嘴,身體,手腳,尾巴,完事。
都知道,turtle 是 python 內置的一個比較有趣味的模塊,俗稱 海龜繪圖,它是基于 tkinter 模塊打造,提供一些簡單的繪圖工具。
在海龜作圖中,我們可以編寫指令讓一個虛擬的(想象中的)海龜在屏幕上來回移動。這個海龜帶著一只鋼筆,我們可以讓海龜無論移動到哪都使用這只鋼筆來繪制線條。通過編寫代碼,以各種很酷的模式移動海龜,我們可以繪制出令人驚奇的圖片。
使用海龜作圖,我們不僅能夠只用幾行代碼就創建出令人印象深刻的視覺效果,而且還可以跟隨海龜看看每行代碼如何影響到它的移動。這能夠幫助我們理解代碼的邏輯。所以海龜作圖也常被用作新手學習 Python 的一種方式。
更豐富詳細的功能及知識可以參考官方文檔:
https://docs.python.org/3/library/turtle.html
了解了tuttle的用法之后就可以開始實戰了。
代碼示例:
def?nose(x,y):#鼻子
????penup()#提起筆
????goto(x,y)#定位
????pendown()#落筆,開始畫
????setheading(-30)#將烏龜的方向設置為to_angle/為數字(0-東、90-北、180-西、270-南)
????begin_fill()#準備開始填充圖形
????a=0.4
????for?i?in?range(120):
????????if?0<=i<30?or?60<=i<90:
????????????a=a+0.08
????????????left(3)?#向左轉3度
????????????forward(a)?#向前走a的步長
????????else:
????????????a=a-0.08
????????????left(3)
????????????forward(a)
????end_fill()#填充完成
????penup()
????setheading(90)
????forward(25)
????setheading(0)
????forward(10)
????pendown()
????pencolor(255,155,192)#畫筆顏色
????setheading(10)
????begin_fill()
????circle(5)
????color(160,82,45)#返回或設置pencolor和fillcolor
????end_fill()
????penup()
????setheading(0)
????forward(20)
????pendown()
????pencolor(255,155,192)
????setheading(10)
????begin_fill()
????circle(5)
????color(160,82,45)
????end_fill()
def?head(x,y):#頭
????color((255,155,192),"pink")
????penup()
????goto(x,y)
????setheading(0)
????pendown()
????begin_fill()
????setheading(180)
????circle(300,-30)
????circle(100,-60)
????circle(80,-100)
????circle(150,-20)
????circle(60,-95)
????setheading(161)
????circle(-300,15)
????penup()
????goto(-100,100)
????pendown()
????setheading(-30)
????a=0.4
????for?i?in?range(60):
????????if?0<=i<30?or?60<=i<90:
????????????a=a+0.08
????????????lt(3)?#向左轉3度
????????????fd(a)?#向前走a的步長
????????else:
????????????a=a-0.08
????????????lt(3)
????????????fd(a)
????end_fill()
def?cheek(x,y):#腮
????color((255,155,192))
????penup()
????goto(x,y)
????pendown()
????setheading(0)
????begin_fill()
????circle(30)
????end_fill()
def?mouth(x,y):?#嘴
????color(239,69,19)
????penup()
????goto(x,y)
????pendown()
????setheading(-80)
????circle(30,40)
????circle(40,80)
def?setting():??????????#參數設置
????pensize(4)
????hideturtle()????????#使烏龜無形(隱藏)
????colormode(255)??????#將其設置為1.0或255.隨后?顏色三元組的r,g,b值必須在0?..?cmode范圍內
????color((255,155,192),"pink")
????setup(840,500)
????speed(10)
def?main():
????setting()???????????#畫布、畫筆設置
????nose(-100,100)??????#鼻子
????head(-69,167)???????#頭
????ears(0,160)?????????#耳朵
????eyes(0,140)?????????#眼睛
????cheek(80,10)????????#腮
????mouth(-20,30)???????#嘴
????done()
if?__name__?==?'__main__':
????main()
思路其實很簡單,就是通過trutle模塊實現基本的圓,橢圓,曲線等,難點在于,如何定位每個部位的位置(建議先草圖畫畫)。
完整代碼需要300行,為了限于篇幅,只放了一部分代碼,需要完整源碼的盆友,可在公眾號后臺回復社會人獲得。
我們正在繪制一份大數據粉絲畫像——
2019大數據粉絲有獎調查問卷上線了
歡迎長按二維碼或點擊閱讀原文填寫
我們每周一將從參與者中
隨機抽取3名幸運小伙伴
每位將獲贈近期出版的技術類圖書1本
更多精彩
在公眾號后臺對話框輸入以下關鍵詞
查看更多優質內容!
PPT?|?報告?|?讀書?|?書單
大數據?|?揭秘?|?人工智能?|?AI
Python?|?機器學習?|?深度學習?|?神經網絡
可視化?|?區塊鏈?|?干貨?|?數學
猜你想看
2019年哪些AI好書一定要看?鵝廠大牛向你推薦這9本
谷歌最新開源前端框架了解一下?前端小白都能看懂的8本書
入門科普:一文看懂機器學習3種類型的概念、根本差別及應用
只需4步,微軟數據科學家教你用OpenRefine搞定數據清洗
Q:?你會畫佩奇了嗎?
歡迎留言與大家分享
覺得不錯,請把這篇文章分享給你的朋友
轉載 / 投稿請聯系:baiyu@hzbook.com
更多精彩,請在后臺點擊“歷史文章”查看
總結
以上是生活随笔為你收集整理的啥是佩奇?爷爷,我用Python给你画一个的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工智能先驱 Nils Nilsson
- 下一篇: 手把手教你用Python求均值、中值和众