一篇文章教你用python畫動(dòng)態(tài)愛心表白

初級(jí)畫心
學(xué)Python,感覺你們的都好復(fù)雜,那我來個(gè)簡(jiǎn)單的,我是直接把心形看作是一個(gè)正方形+兩個(gè)半圓:

于是這就很簡(jiǎn)單了,十行代碼解決:
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)
# 再畫一個(gè)圓半徑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)]))

拆解了一下這段長(zhǎng)串的【一行代碼】,得到如下的多行代碼,實(shí)際運(yùn)行效果一致,代碼如下:
import time
words = input('請(qǐng)輸出想要表達(dá)的文字:')
#例子: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);
但是,有點(diǎn)太單調(diào)了點(diǎn),來,讓我擼起袖子搞點(diǎn)事情,將代碼簡(jiǎn)單改造一下,實(shí)現(xiàn)動(dòng)態(tài)輸出心形的一段話的效果:
改造以后,看上去不錯(cuò)了!效果如下:
代碼如下,喜歡請(qǐng)點(diǎn)贊哦,謝謝❤️!:
import time
words = input('請(qǐng)輸出想要表達(dá)的文字:')
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é),大家可以自己嘗試下^_^!
參考:Lyon https://zhuanlan.zhihu.com/p/33816013
總結(jié)
到此這篇關(guān)于教你用python畫動(dòng)態(tài)愛心表白的文章就介紹到這了,更多相關(guān)python畫動(dòng)態(tài)愛心表白內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python利用smtplib實(shí)現(xiàn)郵件發(fā)送
在當(dāng)今數(shù)字時(shí)代,電子郵件已成為我們生活和工作中不可或缺的一部分,本篇文章將為你講解如何在Python發(fā)送郵件,并為你提供實(shí)現(xiàn)的多種方式,希望對(duì)大家有所幫助2023-06-06
numpy.random.shuffle打亂順序函數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了numpy.random.shuffle打亂順序函數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
如何使用VSCode愉快的寫Python于調(diào)試配置步驟
從我的使用經(jīng)驗(yàn)出發(fā),可以說VSCode用來寫Python真的是再合適不過了,你將體驗(yàn)到絲滑的編程體驗(yàn)和無限擴(kuò)展的可能。而且,如果你的項(xiàng)目是包含多種語言的,比如Web開發(fā),你不必再開多個(gè)編輯器和其他工具,因?yàn)檫@一切都可以在VSCode里完成了2018-04-04
Python使用Chardet庫檢測(cè)字符編碼的操作詳解
在處理文本數(shù)據(jù)時(shí),字符編碼問題是一個(gè)常見的挑戰(zhàn),如果編碼不正確,可能會(huì)導(dǎo)致亂碼問題,而 Chardet 是 Python 中非常實(shí)用的一個(gè)庫,可以幫助我們快速檢測(cè)文件或字符串的編碼格式,本文給大家詳細(xì)介紹了Python Chardet 庫用法,需要的朋友可以參考下2025-01-01
Python提取Linux內(nèi)核源代碼的目錄結(jié)構(gòu)實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狿ython提取Linux內(nèi)核源代碼的目錄結(jié)構(gòu)實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06
python詞云庫wordcloud的使用方法與實(shí)例詳解
這篇文章主要介紹了python詞云庫wordcloud的使用方法與實(shí)例詳解,需要的朋友可以參考下2020-02-02
解決jupyter notebook 前面書寫后面內(nèi)容消失的問題
這篇文章主要介紹了解決jupyter notebook 前面書寫后面內(nèi)容消失的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python下singleton模式的實(shí)現(xiàn)方法
這篇文章主要介紹了Python下singleton模式的實(shí)現(xiàn)方法,有一定的借鑒價(jià)值,需要的朋友可以參考下2014-07-07

