Python画各种爱心

2023-11-05

一行代码画爱心

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(15,-15,-1)]))

在这里插入图片描述

拆解

a = [
        ''.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(15,-15,-1)
    ]

print('\n'.join(a))

输出 I ❤ U

空格与星号可以换位置,运行会有不一样的效果。

import time
y = 2.5
while y>=-1.6:
    x = -3.0
    while x<=4.0:
        if (x*x+y*y-1)**3<=3.6*x*x*y*y*y or (x>-2.4 and x<-2.1 and y<1.5 and y>-1) or (((x<2.5 and x>2.2)or(x>3.4 and x<3.7)) and y>-1 and y<1.5) or (y>-1 and y<-0.6 and x<3.7 and x>2.2):
            print('*',end="")
        else:
            print(' ',end="")
        x += 0.1
    print()
    time.sleep(0.25)
    y -= 0.2

在这里插入图片描述

填充型

输出五个爱心,分别由Dear I love you forever! 五个单词填充而成。

import time
sentence = "Dear, I love you forever!"
for char in sentence.split():
   allChar = []
   for y in range(12, -12, -1):
       lst = []
       lst_con = ''
       for x in range(-30, 30):
            formula = ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3
            if formula <= 0:
                lst_con += char[(x) % len(char)]
            else:
                lst_con += ' '
       lst.append(lst_con)
       allChar += lst
   print('\n'.join(allChar))
   time.sleep(1)

动态画红心

桃心

import turtle
import time
def LittleHeart():
    for i in range(200):
        turtle.right(1)
        turtle.forward(2)

# love = input('请输入表白语句,然后回车,默认为"I Love You":\n')
# me = input('请输入要表白的人:\n')
# if love=='':
# # 如果未输入表白语句,则使用默认语句
#     love='I Love you'

love='I Love you'
me = 'XXX'

turtle.setup(width=900,height=600)  # 爱心的画布的大小
turtle.color('red','red')          # 爱心的颜色及外边笔的颜色
turtle.pensize(5)                   # 画笔的粗细
turtle.speed(1000000)               # 绘制速度

turtle.up()                         # 画笔向上

turtle.hideturtle()
turtle.goto(0,-180)
turtle.showturtle()
turtle.down()
turtle.speed(5)
turtle.begin_fill()

# 开始填充
turtle.left(140)
turtle.forward(224)
LittleHeart()
turtle.left(120)
LittleHeart()
turtle.forward(224)
turtle.end_fill()
turtle.pensize(5)
turtle.up()
turtle.hideturtle()
turtle.goto(0,0)
turtle.showturtle()
turtle.color('#CD5C5C','pink')
turtle.write(love,font=('gungsuh',30,),align="center")
turtle.up()
turtle.hideturtle()

if me !='':
    turtle.color('black', 'pink')
    time.sleep(2)
    turtle.goto(180,-180)
    turtle.showturtle()
    turtle.write(me, font=(20,), align="center", move=True)
    window=turtle.Screen()
    window.exitonclick()

线性

import turtle
import math
turtle.pen()
t=turtle
t.up()
t.goto(0,150)
t.down()
t.color('red')
t.begin_fill()
t.fillcolor('red')
t.speed(1)
t.left(45)
t.forward(150)
t.right(45)
t.forward(100)
t.right(45)
t.forward(100)
t.right(45)
t.forward(100)
t.right(45)
t.forward(250+math.sqrt(2)*100)
t.right (90)
t.speed(2)
t.forward(250+100*math.sqrt(2))
t.right(45)
t.forward(100)
t.right(45)
t.forward(100)
t.right(45)
t.forward(100)
t.right(45)
t.forward(150)
t.end_fill()
t.goto(-10,0)
t.pencolor('white')
# L
t.pensize(10)
t.goto(-50,0)
t.goto(-50,80)
t.up ()
# I
t.goto(-100,0)
t.down()
t.goto(-160,0)
t.goto(-130,0)
t.goto(-130,80)
t.goto(-160,80)
t.goto(-100,80)
t.up()
# O
t.goto(10,25)
t.down()
t.right(45)
t.circle(25,extent=180)
t.goto(60,55)
t.circle(25,extent=180)
t.goto(10,25)
t.up()
t.goto(75,80)
t.down()
t.goto(100,0)
t.goto(125,80)
t.up()
t.goto(180,80)
t.down()
t.goto(140,80)
t.goto(140,0)
t.goto(180,0)
t.up()
t.goto(180,40)
t.down()
t.goto(140,40)
# U
t.up()
t.goto(-40,-30)
t.down()
t.goto(-40,-80)
t.circle(40,extent=180)
t.goto(40,-30)
t.hideturtle()

window=turtle.Screen()
window.exitonclick()

立体红心

import matplotlib
import matplotlib.pyplot as plt #导入绘图模块
from mpl_toolkits.mplot3d import Axes3D #3d绘图模块
import numpy as np #导入数值计算拓展模块
import time

start = time.time()

x_lim, y_lim, z_lim = np.linspace(-10,10,520), np.linspace(-10,10,520), np.linspace(-10,10,520)
# 用来存放绘图点X,Y,Z坐标
X_points, Y_points, Z_points = [], [], []

for x in x_lim:
    for y in y_lim:
        for z in z_lim:
            if (x**2+(9/4)*y**2+z**2-1)**3-(9/80)*y**2*z**3-x**2*z**3<=0:
                X_points.append(x)
                Y_points.append(y)
                Z_points.append(z)

end = time.time()

fig=plt.figure()                                # 画布初始化
ax=fig.add_subplot(111,projection='3d')         # 采用3d绘图
ax.scatter(X_points,Y_points,Z_points,s=20,alpha=0.5,color="red") # 3d散点图填充
plt.show()

print(end-start)

玫瑰

# 绘制玫瑰花并添加文字
import turtle

# 设置画布大小
# turtle.screensize(canvwidth=None, canvheight=None, bg=None)
turtle.setup(width=0.6, height=0.6)
# 设置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)

# 输出文字
printer = turtle.Turtle()
printer.hideturtle()
printer.penup()
printer.back(200)
printer.write("赠给亲爱的 XX\n\n", align="right", font=("楷体", 16, "bold"))
printer.write("from XXX", align="center", font=("楷体", 12, "normal"))

# 花蕊
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(10, 180)
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()

# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)
turtle.circle(80, 98)
turtle.circle(-90, 40)

# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)

# 叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)

# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200, 60)

turtle.done()

import turtle
import random

def love(x, y):         # 在(x,y)处画爱心lalala
    lv = turtle.Turtle()
    lv.hideturtle()
    lv.up()
    lv.goto(x, y)       # 定位到(x,y)

    def curvemove():    # 画圆弧
        for i in range(20):
            lv.right(10)
            lv.forward(2)

    lv.color('red', 'pink')
    lv.speed(10000000)
    lv.pensize(1)
    # 开始画爱心lalala
    lv.down()
    lv.begin_fill()
    lv.left(140)
    lv.forward(22)
    curvemove()
    lv.left(120)
    curvemove()
    lv.forward(22)
    lv.write("YZ", font=("Arial", 12, "normal"), align="center")  # 写上表白的人的名字
    lv.left(140)  # 画完复位
    lv.end_fill()


def tree(branchLen, t):
    if branchLen > 5:       # 剩余树枝太少要结束递归
        if branchLen < 20:  # 如果树枝剩余长度较短则变绿
            t.color("green")
            t.pensize(random.uniform((branchLen + 5) / 4 - 2, (branchLen + 6) / 4 + 5))
            t.down()
            t.forward(branchLen)
            love(t.xcor(), t.ycor())  # 传输现在turtle的坐标
            t.up()
            t.backward(branchLen)
            t.color("brown")
            return
        t.pensize(random.uniform((branchLen + 5) / 4 - 2, (branchLen + 6) / 4 + 5))
        t.down()
        t.forward(branchLen)
        # 以下递归
        ang = random.uniform(15, 45)
        t.right(ang)
        tree(branchLen - random.uniform(12, 16), t)  # 随机决定减小长度
        t.left(2 * ang)
        tree(branchLen - random.uniform(12, 16), t)  # 随机决定减小长度
        t.right(ang)
        t.up()
        t.backward(branchLen)

myWin = turtle.Screen()
t = turtle.Turtle()
t.hideturtle()
t.speed(1000)
t.left(90)
t.up()
t.backward(200)
t.down()
t.color("brown")
t.pensize(32)
t.forward(60)
tree(100, t)
myWin.exitonclick()

我是CSDN钜铠,关注我,带你看更多硬核知识。喜欢记得点赞加收藏哦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python画各种爱心 的相关文章

随机推荐

  • [JAVAee]线程池

    目录 线程池的作用 线程池的使用 线程池的创建方式 线程池的解析 Executors与ThreadPoolExecutor ThreadPoolExecutor线程池的构造方法 RejectedExecutionHandler线程池的拒绝策
  • 从qt下载的可执行文件运行不了

    qt可执行文件通过SSH从ubuntu下载到Windows桌面 再上传到ftp服务器上 然后通过qt ftp客户端下载 实现远程升级的功能 一开始直接上传可执行文件 但是在ubuntu系统中执行不了 对比了两个可执行文件都是一样的 后来压缩
  • python之列表详解

    文章目录 一 创建列表 1 基于弱数据类型语言的定义 2 通过全局函数list 定义 3 创建空列表 二 访问列表的值 1 通过下标索引 2 通过for循环遍历 3 通过while循环遍历 三 列表的分片 四 列表方法 1 append 列
  • linux-文件管理

    linux 二 文件和用户管理 7 19 1 文件管理 Windows 以根目录的方式组织文件C D E linux 以根目录的方式组织文件 二层目录 bin 二进制 普通用户使用的命令 dev 驱动 设备 home 普通用户的家 用户装自
  • spring学习(三) --- 创建bean

    上一节简单的介绍了下spring中bean的注册过程 就是解析配置文件 将bean的信息以BeanDefinition形式存放 这一节看一下bean的创建过程 其创建流程如下 实例化bean 属性赋值 初始化 销毁 创建过程 创建的主要逻辑
  • Hutoo --- 日期时间工具-DateUtil

    使用前安装Hutoo工具MAVEN依赖
  • ~/.bashrc 和 ~/.profile文件的区别

    bashrc 是 Bash shell 的配置文件 在用户每次启动新的 Bash 会话时加载 它包含一些用户自定义的环境变量 别名以及其他与 Bash shell 相关的设置 可以在 bashrc 文件中添加自定义的 shell 函数 命令
  • Gin框架的路由、重定向、数据解析、中间件和同步异步

    安装 go get u github com gin gonic gin Gin 路由 入门 gin Default 中 Default 中的代码 engine New 默认用了两个中间件 日志和恢复 engine Use Logger R
  • Java中的Semaphore信号量机制

    目录 什么是信号量机制 Semaphore工作流程 Semaphore使用方式 什么是信号量机制 信号量机制是一种通过使用计数器来控制共享资源访问的机制 计数器计数的是共享资源的访问许可 如果计数器大于0则允许访问 如果为0 则拒绝访问 J
  • 在matlab中实现图像的自相关和互相关

    图像的自相关 clear I1 imread lenna bmp bmp 输入图像1 参考图像 I1 I1 1 figure 1 显示输入图像1 colormap gray 255 image I1 axis off FI1 fft2 I1
  • XCode14 & iOS16适配 pod签名

    一 iOS16手机开启开发者模式 developer mode disable iOS16手机未打开开发者模式时 1 Xcode 无法选中 iOS16的设备 报错 developer mode disable 2 无法打开升级前编译的App
  • 解决 Axios 跨域问题,轻松实现接口调用

    跨域是指访问另外一个域的资源 由于浏览器的同源策略 默认情况下使用 XMLHttpRequest 和 Fetch 请求时是不允许跨域的 跨域的根本原因是浏览器的同源策略 这是由浏览器对 JavaScript 施加的安全限制 Axios 跨域
  • 使用python简单创建自动点击脚本,使用的是pyautogui

    所有代码在最后面 首先引入包 首先引入包 import pyautogui 鼠标控制包 import time 时间包 后面要用 然后获取需要点击的坐标 for i in range 5 通过循环加延迟 获取鼠标位置 mouse pyaut
  • 推荐 9 个经典前后端分离项目

    前后端分离是现在主流的架构设计模式 它初衷是用 单一职责 原则把代码质量提上去从而达到节省人力和减少沟通时的信息损失的目的 本文推荐九个前后端分离的开源项目 都是采用最流行的技术栈 本文推荐的开源项目已经收录到 Awesome GitHub
  • 黑苹果Mac系统快捷键修改

    由于苹果机的键盘和普通PC机的键盘不同 因此苹果机的快捷键也会与普通PC不同 这对于我们这些经常使用键盘的人来说非常不便 下面附上两者的不同 普通键盘 苹果键盘 修改快捷键 我推荐的软件是KeyBindingsEditor 它很好用 另外需
  • The Evaluation of Language Model (语言模型的性能评价方法 Perplexity)

    The Evaluation of Language Model 语言模型的性能评价 语言模型 Language Model 以下简称LM 直观理解 用于判断一句话是否从语法上通顺 Question 1 训练好的LM效果是好还是坏 如何评价
  • L2-014 列车调度 (25 分)详解

    火车站的列车调度铁轨的结构如下图所示 两端分别是一条入口 Entrance 轨道和一条出口 Exit 轨道 它们之间有N条平行的轨道 每趟列车从入口可以选择任意一条轨道进入 最后从出口离开 在图中有9趟列车 在入口处按照 8 4 2 5 3
  • kali渗透--msf简单使用

    使用MSF Metasploit 利用MS12 020 RDP远程代码执行漏洞 实验环境准备 1 一台 winXP 作为受害者 最好拍摄好一个快照 IP 10 1 1 2 2 kali 作为攻击者 IP 10 1 1 1 3 将攻击者和受害
  • 常用命令图解 & & git 错误 fatal: Not a valid object name: ‘master‘.

    亲测可用 若有疑问请私信 常用命令图解 转自Git 常用命令详解 二 阳光岛主的博客 CSDN博客 git命令 Git 是一个很强大的分布式版本管理工具 它不但适用于管理大型开源软件的源代码 如 linux kernel 管理私人的文档和源
  • Python画各种爱心

    目录 一行代码画爱心 拆解 输出 I U 填充型 动态画红心 桃心 线性 立体红心 玫瑰 树 一行代码画爱心 print n join join Love x y len Love if x 0 05 2 y 0 1 2 1 3 x 0 0