一篇文章教你用python画动态爱心表白

作者:曾亲桂林 时间:2021-02-10 04:14:38 

一篇文章教你用python画动态爱心表白

初级画心

学Python,感觉你们的都好复杂,那我来个简单的,我是直接把心形看作是一个正方形+两个半圆:

一篇文章教你用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()
# 绘制完成

一篇文章教你用python画动态爱心表白

一行代码画心

原代码


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)]))

一篇文章教你用python画动态爱心表白

拆解了一下这段长串的【一行代码】,得到如下的多行代码,实际运行效果一致,代码如下:


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://blog.csdn.net/bigzql/article/details/109713022

标签:python,动态,爱心
0
投稿

猜你喜欢

  • python使用KNN算法识别手写数字

    2022-02-20 10:48:23
  • Go语言服务器开发之客户端向服务器发送数据并接收返回数据的方法

    2024-04-27 15:39:58
  • python中pandas.DataFrame对行与列求和及添加新行与列示例

    2023-03-16 22:44:01
  • selenium IDE自动化测试脚本的实现

    2023-06-29 18:46:11
  • 简洁js的隔行变色代码

    2008-06-18 18:17:00
  • Python装饰器使用方法全面梳理

    2023-04-27 08:22:15
  • golang 实现tcp server端和client端,并计算RTT时间操作

    2023-08-30 14:12:49
  • 解决Python中定时任务线程无法自动退出的问题

    2022-09-05 22:52:52
  • Pycharm创建项目时如何自动添加头部信息

    2021-06-28 18:01:14
  • js数组去重的方法汇总

    2024-04-18 10:55:17
  • JavaScript Base64编码和解码,实现URL参数传递。

    2024-04-22 22:45:32
  • JavaScript中CreateTextFile函数

    2024-04-18 10:49:03
  • python pyinstaller打包exe报错的解决方法

    2022-05-11 20:39:40
  • mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法

    2024-01-20 19:17:17
  • python使用matplotlib画饼状图

    2023-04-06 12:23:29
  • python实现PolynomialFeatures多项式的方法

    2023-09-24 21:12:24
  • Golang巧用defer进行错误处理的方法

    2023-08-05 03:21:13
  • Python实现周期性抓取网页内容的方法

    2023-04-12 01:33:36
  • django的分页器Paginator 从django中导入类

    2022-02-07 04:24:29
  • php返回相对时间(如:20分钟前,3天前)的方法

    2023-10-26 11:20:38
  • asp之家 网络编程 m.aspxhome.com