用python画爱心再加一行文字_如何理解python一行代码实现一个爱心字符画?
前言
python中有個(gè)很酷的效果,一行代碼實(shí)現(xiàn)一個(gè)愛心字符,雖說是一行代碼,但是理解起來還是比較難的,括號太多,并且使用了python的一些快捷小技巧。比如三元表達(dá)式,列表生成式,字符串拼接以及一個(gè)心形曲線公式:(x2+y2-1)3-x2y3=0。
下面通過分解來理解這行代碼,這里主要理解三元表達(dá)式,列表生成式,還有就是循環(huán)中的數(shù)字為什么是-30,30和30,-30。
三元表達(dá)式理解
三元表達(dá)式其實(shí)就是將if else語句一行書寫,格式為:result = 為真實(shí)的結(jié)果 if 判斷條件 else 為假時(shí)的結(jié)果。
列表生成式理解
原理分析
最終結(jié)果是一個(gè)愛心的字符串形狀,實(shí)際上先打印出60行和60列的字符串方陣,這里為了演示,先使用了一個(gè)字符串。
根據(jù)上面的效果可以看出的確是一個(gè)字符方陣,如何將這個(gè)方陣變成愛心的形狀,就需要利用心形曲線公式:(x2+y2-1)3-x2y3=0。這里我們?nèi)绻∮? 就顯示 字符 O,否則就顯示 點(diǎn)(.)。
愛心形狀出來了,如果想要只保留愛心形狀,只需要將外圍一圈O寫成空字符就可以了。現(xiàn)在還有循環(huán)中的數(shù)值范圍是如何求得不清楚。
這里就涉及到解方程了,求邊界的范圍。
求解邊界范圍
通過sympy庫,可以直接使用隱函數(shù)公式,不用給定一系列點(diǎn)就可以直接繪制出圖形來,非常方便,根據(jù)圖形可以 看出x和y取值范圍。
繪制散點(diǎn)圖
上面求出的范圍非常小,有點(diǎn)沒想到,我們通過這個(gè)范圍去繪制一個(gè)散點(diǎn)圖試試。
理解
根據(jù)結(jié)果可以看出的確是一個(gè)個(gè)點(diǎn)形成的,由于點(diǎn)比較多,顯示區(qū)間比較小,整體看上去就像一個(gè)愛心的效果了。
這里有些方法可能比較難理解,可以結(jié)合下面的兩張圖片理解,它們的作用就是將滿足條件地點(diǎn)的x和y坐標(biāo)分別提取出來,為后面繪圖做準(zhǔn)備。
如果不好理解,也可以采用下面這個(gè)方法,更好理解。
打印愛心字符圖形
前面利用散點(diǎn)圖的方式,繪制出了一個(gè)愛心圖形,實(shí)際上是由一個(gè)個(gè)點(diǎn)組成的,如果將點(diǎn)用字符來替代,那么就可以變成字符圖形了。這里的arange中的數(shù)字間隔0.1,根據(jù)你想要的點(diǎn)多少可以調(diào)整。
上面的0.1的間隔顯得有點(diǎn)細(xì)長,讓橫向的點(diǎn)多一些,就可以變得圓潤一點(diǎn)了。
將當(dāng)個(gè)字符改成字符串,利用字符串的索引可以獲取到不同的字符,也可以使用隨機(jī)方法去選取。
解開疑惑
通過上面動(dòng)手自己實(shí)現(xiàn),可以知道實(shí)際上愛心的邊界范圍,但是單行中確是-30,30,這里是因?yàn)樗膞和yj乘以了一個(gè)比較小的數(shù)進(jìn)行的縮放,從而放大了它的取值范圍,原理和我們上面調(diào)整arange中的間隔數(shù)字大小是一樣的。
(全文完)
顯示進(jìn)度下載圖片
如何使用python實(shí)現(xiàn)文本進(jìn)度條?
建構(gòu)主義教學(xué)的核心是什么?
python小游戲設(shè)計(jì)入門5-撿金幣游戲(下)
總結(jié)
以上是生活随笔為你收集整理的用python画爱心再加一行文字_如何理解python一行代码实现一个爱心字符画?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kafka的原理和作用是什么
- 下一篇: 苹果8p原装配件有什么