初級畫心
學Python,感覺你們的都好復雜,那我來個簡單的,我是直接把心形看作是一個正方形+兩個半圓:
于是這就很簡單了,十行代碼解決:
import turtle as t
t.pensize(2)
# 筆大小2像素
t.pencolor("red")
# 顏色為紅色
t.left(45)
# 45度
t.fd(200)
# 向前200直線
t.circle(100, 180)
# 畫一圓半徑100 弧度180
t.right(90)
# 向右90度
t.circle(100, 180)
# 再畫一個圓半徑100 弧度180
t.fd(200)
# 直線向前直線200
t.done()
# 繪制完成
一行代碼畫心
原代碼
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)]))
拆解了一下這段長串的【一行代碼】,得到如下的多行代碼,實際運行效果一致,代碼如下:
import time
words = input('請輸出想要表達的文字:')
#例子:words = "Dear lili, Happy Valentine's Day! Lyon Will Always Love You Till The End! ? Forever! ?"
for item in words.split():
#要想實作列印出字符間的空格效果,此處添加:item = item+' '
letterlist = []#letterlist是所有列印字符的總list,里面包含y條子串列list_X
for y in range(12, -12, -1):
list_X = []#list_X是X軸上的列印字串列,里面裝著一個String類的letters
letters = ''#letters即為list_X內的字串,實際是本行要列印的所有字符
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);
但是,有點太單調了點,來,讓我擼起袖子搞點事情,將代碼簡單改造一下,實作動態輸出心形的一段話的效果:
改造以后,看上去不錯了!效果如下:
代碼如下,喜歡請點贊哦,謝謝??!:
import time
words = input('請輸出想要表達的文字:')
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)
其實,像?? 這樣型別的顏文字其實也是可以輸出的,不過格式不是標準的心型,需要自行調節,大家可以自己嘗試下^_^!
參考:Lyon https://zhuanlan.zhihu.com/p/33816013
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/223112.html
標籤:其他
