
7.jpg
更新:鑒于不少盆友評論,我也細(xì)想了一下這段代碼邏輯,其實(shí)說難也不難,有幾點(diǎn):
1.愛心圖形和圓形、橢圓.....類似,都是由一系列的點(diǎn)(X,Y)構(gòu)成的曲線,X,Y又滿足一定的關(guān)系,這樣可以確定出一個(gè)表達(dá)式expression,然后就是兩個(gè)for循環(huán)(for y in range;for x in range)逐行逐列地開始打印,滿足條件expression的打印出字符,否則打印空格符。
2.python語法:.split();.join();** 比較簡單可以自行百度下~
最后,拆解了一下這段長串的【一行代碼】,得到如下的多行代碼,實(shí)際運(yùn)行效果一致,代碼如下:
import time
words = input('Please input the words you want to say!:')
#例子:words = "Dear lili, Happy Valentine's Day! Lyon Will Always Love You Till The End! ? Forever! ?"
for item in words.split():
#要想實(shí)現(xiàn)打印出字符間的空格效果,此處添加:item = item+' '
letterlist = []#letterlist是所有打印字符的總list,里面包含y條子列表list_X
for y in range(12, -12, -1):
list_X = []#list_X是X軸上的打印字符列表,里面裝著一個(gè)String類的letters
letters = ''#letters即為list_X內(nèi)的字符串,實(shí)際是本行要打印的所有字符
for x in range(-30, 30):#*是乘法,**是冪次方
expression = ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3
if expression <= 0:
letters += item[(x-y) % len(item)]
else:
letters += ' '
list_X.append(letters)
letterlist += list_X
print('\n'.join(letterlist))
time.sleep(1.5);
情人節(jié)到了,怎么表白?受到幾個(gè)小例子告訴你, 一行Python代碼能干哪些事的啟發(fā),我決定用Python寫一段?? 的話來表白(裝X)。原文是一行代碼實(shí)現(xiàn)輸出愛心圖:
print('\n'.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(30, -30, -1)]))
效果如下:

image
但是,有點(diǎn)太單調(diào)了點(diǎn),來,讓我擼起袖子搞點(diǎn)事情,將代碼簡單改造一下,實(shí)現(xiàn)動態(tài)輸出心形的一段話的效果:
改造以后,看上去不錯了!效果詳見知乎視頻:https://zhuanlan.zhihu.com/p/33816013
代碼如下,喜歡請點(diǎn)贊哦,謝謝???。?/p>
import time
words = input('Please input the words you want to say!:')
for item in words.split():
print('\n'.join([''.join([(item[(x-y) % len(item)] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(12, -12, -1)]))
time.sleep(1.5)
其實(shí),像?? ??這樣類型的顏文字其實(shí)也是可以輸出的,不過格式不是標(biāo)準(zhǔn)的心型,需要自行調(diào)節(jié),大家可以自己嘗試下_!