Python 送你一棵圣诞树
今天是圣誕節(jié),先祝大家圣誕快樂!
有人要說了,圣誕節(jié)是耶穌誕生的日子,我又不信基督教,有啥好慶祝的。這你就有所不知了,Python 的誕生也跟圣誕節(jié)有關(guān):1989 年,那是一個(gè)冬天,那年的第一場(chǎng)雪來得比以往時(shí)候來得更早一些,有一位程序員,在圣誕期間的阿姆斯特丹感覺特別閑,就決定開發(fā)一個(gè)新的腳本語言。他一邊開發(fā)一邊刷劇,于是新語言的命名也來自于他熱衷的豆瓣9分神劇《Monty Python’s Flying Circus(巨蟒劇團(tuán)之飛翔的馬戲團(tuán))》。
此人便是后來的 Python 之父·仁慈的獨(dú)裁者·Guido van Rossum。
去年的這個(gè)時(shí)候,我發(fā)過一篇《Python 送你一頂圣誕帽》。但今年不能老送同樣的東西啊,那就給大家送上幾棵圣誕樹吧。
1、極簡版
這個(gè)可算是最簡單的圣誕樹了。類似我們習(xí)題中的打印三角形,三四行代碼即可搞定(剛開始學(xué)編程的同學(xué)可以不看代碼自己嘗試寫下):
height = 11 for i in range(height):print((' ' * (height - i)) + ('*' * ((2 * i) + 1))) print((' ' * height) + '|') 復(fù)制代碼2、彩色版
在極簡版的基礎(chǔ)上,可以通過特殊轉(zhuǎn)義字符實(shí)現(xiàn)變色,給圣誕樹加上點(diǎn)綴。要注意的是,字符顏色并不是對(duì)所有 IDE 環(huán)境都有效,不同系統(tǒng)也不一樣(Windows 僅部分命令行有效):
import random height = 11 for i in range(height):print(' ' * (height - i), end='')for j in range((2 * i) + 1):if random.random() < 0.1:color = random.choice(['\033[1;31m', '\033[33m', '\033[1;34m'])print(color, end='') # 彩燈else:print('\033[32m', end='') # 綠色print('*', end='')print() print((' ' * height) + '|') 復(fù)制代碼3、海龜版
Python 里有個(gè)自帶的繪圖工具叫 turtle,編程教室之前介紹過《【編程課堂】海龜作圖》,用它也能畫圣誕樹。完整代碼見文末地址,核心繪制代碼:
# 創(chuàng)建畫板 import turtle screen = turtle.Screen() screen.setup(800,600) # 畫紅色圓 circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.up() circle.goto(0,100) circle.stamp() # 畫綠色方塊 square = turtle.Turtle() square.shape('square') square.color('green') square.up() square.goto(0,200) square.stamp() # 暫停,點(diǎn)擊后退出 turtle.exitonclick() 復(fù)制代碼4、海龜分形版
分形(Fractal):一個(gè)粗糙或零碎的幾何形狀,可以分成數(shù)個(gè)部分,且每一部分都(至少近似地)是整體縮小后的形狀。例如上面這棵圣誕樹,每一個(gè)樹枝又是一個(gè)小的圣誕樹。這與編程中的遞歸思想很像:
n = 50 from turtle import * speed("fastest") left(90) forward(3*n) # 頂部五角星略過 color("dark green") backward(n*4.8) def tree(d, s):if d <= 0:returnforward(s)tree(d-1, s*.8)right(120)tree(d-3, s*.5)right(120)tree(d-3, s*.5)right(120)backward(s) tree(15, n) backward(n/2) exitonclick() 復(fù)制代碼5、炫彩版
一般圣誕樹上都會(huì)掛上 blingbling 的小彩燈。通過 cls/clear 命令清屏控制臺(tái),循環(huán)多次繪制,就可以實(shí)現(xiàn)類似 GIF 圖片的動(dòng)態(tài)效果。清屏部分代碼:
import platform import os os_name = platform.uname()[0] IS_WIN = os_name == 'Windows' os.system('cls' if IS_WIN else 'clear') 復(fù)制代碼以上幾棵圣誕樹的完整代碼均已上傳,獲取代碼請(qǐng)?jiān)诠娞?hào)(Crossin的編程教室)里回復(fù)關(guān)鍵字 圣誕樹
如果你有其他的實(shí)現(xiàn),也歡迎發(fā)布在留言中。
【注】
海龜版、海龜分形版 來源:
R&Python繪制圣誕樹-EasyCharts
https://ask.hellobi.com/blog/EasyCharts/5777
炫彩版 來源:
(圣誕禮物)在終端下畫個(gè)圣誕樹陪你過節(jié)-Medici.Yan
http://blog.evalbug.com/2015/12/25/py_fun_0/
════
其他文章及回答:
編程實(shí)訓(xùn) | 如何自學(xué)Python | 新手引導(dǎo) | 精選Python問答 | Python單詞表 | 人工智能 | 爬蟲 | 我用Python | requests | 計(jì)算機(jī)視覺
歡迎搜索及關(guān)注公眾號(hào):Crossin的編程教室
總結(jié)
以上是生活随笔為你收集整理的Python 送你一棵圣诞树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xcode 模拟器(Simulator)
- 下一篇: python 调用另一个python文件