美文网首页
python画颗爱心送给Ta

python画颗爱心送给Ta

作者: 高明无思 | 来源:发表于2021-06-26 19:36 被阅读0次

今天我们做件浪漫的事,就是用Python画颗爱心送给你喜欢的Ta,一边是我们学习的热情,一边是浪漫的学习.先看效果.有没有心里满是Ta的感觉.


Screen Shot 2021-06-26 at 7.19.18 PM.png

Step0. 我们先找一个心形的数学方程式,就是下边这个

image.png

python实现

def heart_fx(x, y):
    '''
        心形方程式
    '''
    return ((x * 0.04)**2 + (y * 0.1)**2 - 1)**3 - (x * 0.05)**2 * (y * 0.1)**3

1.其中的0.04是对x轴的缩放,0.1是对y轴的缩放
2.x**2 是x的2次方计算方式

Step1.我们在心形图形的内部每个坐标点随机显示(我,爱,你)里的一个字符

随机取字符:

def random_world(x, y):
    '''
        根据x-y的结果哈希,随机返回 '我','爱','你',之一,这里也可以使用随机函数random.sample(u'我爱你',1)[0]产生
    '''
    return u'我爱你' [(x - y) % 3]

生成每一行的字符串:

def create_line_world(x, y):
    '''
        在心形坐标内生成每一行的字符
    '''
    return (random_world(x, y) if heart_fx(x, y) <= 0 else'  ')

Step2.生成坐标系,并把上边生成的字符串加入坐标列表中

def draw_heart():

    # 每列的字符集
    l2 = []
    y_start, y_end, y_step = 15, -15, -1
    x_start, x_end, x_step = -35, 35, 2
    #  将纵向每个字符当作 y 坐标的刻度
    for y in range(y_start, y_end, y_step):

        # 每一行的字符列表
        l3 = []
        #  将横向每个字符当作 x 坐标的刻度
        for x in range(x_start, x_end, x_step):
            # 如果 x,y 点在心形内,则将一个字符加入到行,否则加入空字符
            l3.append(create_line_world(x, y))

        # 将每行的字符加入列集合中
        l2.append(''.join(l3))

    # 整个心形的字符串
    l1 = '\n'.join(l2)
   return l1

Step3.打印出带色彩的爱心

def main():
    heart_worlds = draw_heart()
    # 带颜色打印所有的字符
    for i in heart_worlds:
        print("\033[91m" + i, end="", flush=True)

最后贴上完整的代码:
draw_heart.py

#!/usr/bin/env python
# coding: utf-8
# Gao Ming Ming Create At 2021-06-22 19:36:08
# Description:依据心形公式打印心形图形
# python draw_heart.py


def heart_fx(x, y):
    '''
        心形方程式
    '''
    return ((x * 0.04)**2 + (y * 0.1)**2 - 1)**3 - (x * 0.05)**2 * (y * 0.1)**3


def random_world(x, y):
    '''
        根据x-y的结果哈希,随机返回 '我','爱','你',之一,这里也可以使用随机函数random.sample(u'我爱你',1)[0]产生
    '''
    return u'我爱你' [(x - y) % 3]


def create_line_world(x, y):
    '''
        在心形坐标内生成每一行的字符
    '''
    return (random_world(x, y) if heart_fx(x, y) <= 0 else'  ')


def draw_heart():

    # 每列的字符集
    l2 = []
    y_start, y_end, y_step = 15, -15, -1
    x_start, x_end, x_step = -35, 35, 2
    #  将纵向每个字符当作 y 坐标的刻度
    for y in range(y_start, y_end, y_step):

        # 每一行的字符列表
        l3 = []
        #  将横向每个字符当作 x 坐标的刻度
        for x in range(x_start, x_end, x_step):
            # 如果 x,y 点在心形内,则将一个字符加入到行,否则加入空字符
            l3.append(create_line_world(x, y))

        # 将每行的字符加入列集合中
        l2.append(''.join(l3))

    # 整个心形的字符串
    l1 = '\n'.join(l2)
    return l1


def main():
    heart_worlds = draw_heart()
    # 带颜色打印所有的字符
    for i in heart_worlds:
        print("\033[91m" + i, end="", flush=True)


if __name__ == '__main__':
    main()

保存成文件draw_heart.py,执行

python draw_heart.py

此刻就是心动的时刻

相关文章

  • python画颗爱心送给Ta

    今天我们做件浪漫的事,就是用Python画颗爱心送给你喜欢的Ta,一边是我们学习的热情,一边是浪漫的学习.先看效果...

  • 被禁足的日子(1)

    昨日下了一天的雪,今天醒来已是艳阳高照,兴奋的打开门穿着拖鞋在雪地上咯吱咯吱的踩出声响。拿颗木棍画颗爱心送给在那远...

  • 石头画一爱心

    画颗爱心,这个还是比较简单的 水粉颜料

  • 20180509 周三

    亲爱的悠悠: 每天你都会送几张你画满爱心的画给妈妈,每当妈妈问你“为什么每天都画这么多爱心送给妈妈啊?”,你总是回...

  • 20180509 周三

    亲爱的悠悠: 每天你都会送几张你画满爱心的画给妈妈,每当妈妈问你“为什么每天都画这么多爱心送给妈妈啊?”,你总是回...

  • Python数据可视化:WordCloud画个爱心

    七夕了,给大家画个爱心 WordCloud详细介绍 Python数据可视化:WordCloud入门Python数据...

  • 办公桌上的一束鲜花

    谁送给你的鲜花 花瓶上的两颗小爱心❤ 调皮地炫耀着 ——我的地盘,你做主

  • 车载舒心饮品,旅途有ta更有趣

    送给开车的家人 送给爱车的那个TA 水果宝贝mini车载舒心饮品,旅途有ta更有趣

  • 徐俊生为市爱心公益协会赠送瓷盘作品

    日前,爱心人士、艺术家徐俊生来到我市爱心公益协会,把一件凝聚着心血和高超艺术构思的瓷盘作品画赠送给该协会,令会长彭...

  • 颜值爆表的爱心饼干,送给那个ta

    今天分享的是颜值爆表的饼干:爱心饼干,不仅适合小朋友吃,情人节送给那个ta也是非常合适的哦,口感是酥掉渣的那种,夹...

网友评论

      本文标题:python画颗爱心送给Ta

      本文链接:https://www.haomeiwen.com/subject/qrizyltx.html