前言

python中有个很酷的效果,一行代码实现一个爱心字符,虽说是一行代码,但是理解起来还是比较难的,括号太多,并且使用了python的一些快捷小技巧。比如三元表达式,列表生成式,字符串拼接以及一个心形曲线公式:(x2+y2-1)3-x2y3=0。

下面通过分解来理解这行代码,这里主要理解三元表达式,列表生成式,还有就是循环中的数字为什么是-30,30和30,-30。

三元表达式理解

三元表达式其实就是将if else语句一行书写,格式为:result = 为真时的结果 if 判断条件 else 为假时的结果。

列表生成式理解

原理分析

最终结果是一个爱心的字符串形状,实际上先打印出60行和60列的字符串方阵,这里为了演示,先使用了一个字符串。

根据上面的效果可以看出的确是一个字符方阵,如何将这个方阵变成爱心的形状,就需要利用心形曲线公式:(x2+y2-1)3-x2y3=0。这里我们如果小于0 就显示 字符 O,否则就显示 点(.)。

爱心形状出来了,如果想要只保留爱心形状,只需要将外围一圈O写成空字符就可以了。现在还有循环中的数字范围是如何求的不清楚。

这里就涉及到解方程了,求边界的范围。

求解边界范围

通过sympy库,可以直接使用隐函数公式,不用给定一系列点就可以直接绘制出图形来,非常方便,根据图形可以 看出x和y取值范围。

绘制散点图

上面求出的范围非常小,有点没想到,我们通过这个范围去绘制一个散点图试试。

理解

根据结果可以看出的确是一个个点形成的,由于点比较多,显示区间比较小,整体看上去就像一个爱心的效果了。

这里有些方法可能比较难理解,可以结合下面的两张图片理解,它们的作用就是将满足条件的点的x和y坐标分别提取出来,为后面绘图做准备。

如果不好理解,也可以采用下面这个方法,更好理解。

打印爱心字符图形

前面利用散点图的方式,绘制出了一个爱心图形,实际上是由一个个点组成的,如果将点用字符来替代,那么就可以变成字符图形了。这里的arange中的数字间隔0.1,根据你想要的点多少可以调整。

上面的0.1的间隔显得有点细长,让横向的点多一些,就可以变的圆润一点了。

将单个字符改成字符串,利用字符串的索引可以获取到不同的字符,也可以使用随机方法去选取。

解开疑惑

通过上面动手自己实现,可以知道实际上爱心的边界范围,但是单行中确是-30,30,这里是因为它的x和yj乘以了一个比较小的数进行的缩放,从而放大了它的取值范围,原理和我们上面调整arange中的间隔数字大小是一样的。

(全文完)

长按二维码,加关注!叶子陪你玩

欢迎转载,转载请注明出处!

欢迎关注公众微信号:叶子陪你玩编程 分享自己的python学习之路

python画树叶-如何理解python一行代码实现一个爱心字符画?相关推荐

  1. 用python画爱心再加一行文字_如何理解python一行代码实现一个爱心字符画?

    前言 python中有个很酷的效果,一行代码实现一个爱心字符,虽说是一行代码,但是理解起来还是比较难的,括号太多,并且使用了python的一些快捷小技巧.比如三元表达式,列表生成式,字符串拼接以及一个 ...

  2. python画爱心原理_如何理解python一行代码实现一个爱心字符画?

    前言 python中有个很酷的效果,一行代码实现一个爱心字符,虽说是一行代码,但是理解起来还是比较难的,括号太多,并且使用了python的一些快捷小技巧.比如三元表达式,列表生成式,字符串拼接以及一个 ...

  3. Python编程语言学习:仅需一行代码将字符串化的数字数组、int数组、float数组实现之间互换(将一个字符串数组转换成整型数组)

    Python编程语言学习:仅需一行代码将字符串化的数字数组.int数组.float数组实现之间互换(将一个字符串数组转换成整型数组) 目录

  4. python画熊猫代码_超清字符画——Python代码

    字符画视频如下,可以先预览一下效果(建议进入BILIBILI全屏观看):[樱花绽放]代码敲出武汉加油(全屏观看)期待战疫成功,武大赏樱_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bi ...

  5. 【Python line_profiler memory_profiler】分析每一行代码的耗时及内存占用情况

    一.Python 借助 line_profiler 模块 查看每一行耗了多少时间? 1. 安装 windows10.python3.7.4安装,安装得个2分钟左右 pip install line_p ...

  6. python用一行代码编写一个回声程序_一行python代码实现树结构

    树结构是一种抽象数据类型,在计算机科学领域有着非常广泛的应用.一颗树可以简单的表示为根, 左子树, 右子树. 而左子树和右子树又可以有自己的子树.这似乎是一种比较复杂的数据结构,那么真的能像我们在标题 ...

  7. 【Python】Modin,只需一行代码加速你的Pandas

    本文翻译自:Shrivarsheni的博客 Modin是一个Python第三方库,可以通过并行来处理大数据集.它的语法和pandas非常相似,因其出色的性能,能弥补Pandas在处理大数据上的缺陷. ...

  8. 【效率】微软开源最强Python自动化神器!不用写一行代码!

    相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也 ...

  9. python用一行代码编写一个回声程序_利用Python实现一个WC程序

    项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单词数和行数 ...

最新文章

  1. java日历教程_JAVA Calendar方法使用基础教程详解
  2. (0023)iOS 开发之Mac上MySQL服务的卸载
  3. shellcode学习总结
  4. Android studio使用手册说明
  5. 线程间通讯《代码》pthread_cond_wait/signal
  6. 5年内,创始人父子相继因意外去世,这家市值百亿公司怎么了?
  7. window两个窗口上下摆放_滑动窗口技巧
  8. 【递归】n个数的全排列
  9. vue mianjs 引用css_7个有用的Vue开发技巧
  10. 库卡六轴机器人编程手册_工业机器人(ABB、库卡、安川)编程专业教材!
  11. 【转载】斐讯K2P B1刷入金梅林固件,加koolproxy、S-S R等【V1.0尝鲜版】
  12. 服务器搬迁需要注意的几个地方
  13. EPLAN 教育版超详细安装说明
  14. Snowy Smile (HDU - 6638,稀疏矩阵子矩阵最大和)
  15. 腾讯微信客服电话号码是多少
  16. AURIX TC397 CAN MCMCAN
  17. hbase数据库_实验目的
  18. Android开发学习总结——搭建最新版本的Android开发环境
  19. IDEA 版 API 接口神器来了,一键生成文档,嘎嘎香!
  20. 读书百客:《绮罗香·咏春雨》赏析

热门文章

  1. 经常玩电脑正确的坐姿_初级茶艺师工作技能培训:第一节礼仪(正确的坐姿)...
  2. mac用什么写python程序_mac下的应用程序发布 及 打包(Python写的脚本,可打包第三方库)...
  3. python 冷门_Python最冷门的模块
  4. 趣谈网络协议笔记-二(第十六讲上)
  5. vim下自动排版命令
  6. DNS同时占用UDP和TCP端口53——传输数据超过512时候用tcp,DNS服务器可以配置仅支持UDP查询包...
  7. python - 多线程简单实现
  8. Vue开发跨端应用(四)electron发布web应用并打包app
  9. 微信小程序-封装http请求(ajax)
  10. java生成随机数保留数点后两位