当前位置:首页>python>Python实战项目之花瓣爱心

Python实战项目之花瓣爱心

  • 2026-09-08 07:37:26
Python实战项目之花瓣爱心

一、Python 花瓣爱心完整代码(可直接复制运行)

python  

import turtle

import math

# 设置画布与画笔

screen = turtle.Screen()

screen.title("Python 花瓣爱心特效")

screen.bgcolor("#f9f9f9")

pen = turtle.Turtle()

pen.hideturtle()

pen.speed(0)

pen.color('red', 'pink')

# 定义爱心曲线函数

def heart_func(t):

    x = 16 * math.sin(t) ** 3

    y = 13 * math.cos(t) - 5 * math.cos(2 * t) - 2 * math.cos(3 * t) - math.cos(4 * t)

    return x, y

# 绘制花瓣爱心

pen.begin_fill()

for i in range(600):

    t = math.radians(i)

    x, y = heart_func(t)

    pen.goto(x * 10, y * 10)

pen.end_fill()

# 绘制中心文字

pen.penup()

pen.goto(0, -50)

pen.color("#c70039")

pen.write("I ❤️ Python", font=("Microsoft YaHei", 18, "bold"), align="center")

# 保持窗口

turtle.done()

运行效果:

- 画出一个标准数学爱心

- 填充粉色,边框红色

- 中间显示文字  I ❤️ Python 

- 窗口不会自动关闭

二、整体项目结构与实现思路(详细过程)

1. 需求分析

我们要实现的是:

1. 使用 Python 绘制数学公式生成的爱心

2. 爱心形状饱满、对称、美观

3. 带填充色、边框色

4. 居中显示文字

5. 窗口保持不退出

实现工具选择:

- turtle 库:Python 内置绘图库,简单直观,适合图形绘制

- math 库:提供三角函数,用于计算爱心坐标

- 不依赖第三方库,无需安装,直接运行

2. 实现步骤总览

1. 导入库

2. 创建画布与画笔

3. 定义爱心数学公式

4. 循环计算坐标并连线

5. 填充颜色

6. 添加文字

7. 保持窗口显示

下面逐行、逐模块详细拆解。

三、逐行代码深度分析(超详细)

模块 1:导入依赖库

python  

import turtle

import math

作用说明

-  turtle :Python 内置的绘图模块,像拿着一支笔在屏幕上画线

-  math :提供数学函数,如  sin 、 cos 、 pow 、 radians  等

- 这两个库都是 Python 自带,不需要  pip install 

为什么必须导入?

爱心是参数方程曲线,必须用三角函数计算坐标,所以必须  math 。

绘图必须用绘图库,turtle 最简单适合新手。

模块 2:初始化画布与画笔

python  

screen = turtle.Screen()

screen.title("Python 花瓣爱心特效")

screen.bgcolor("#f9f9f9")

详细解释

1.  turtle.Screen() 

创建一个绘图窗口对象,所有画面都在这个窗口里展示。

2.  screen.title(...) 

设置窗口标题栏文字,美观友好。

3.  screen.bgcolor("#f9f9f9") 

设置背景色为浅灰色, #f9f9f9  是十六进制颜色码。

也可以写英文: 'white' 、 'lightblue' 。

python  

pen = turtle.Turtle()

pen.hideturtle()

pen.speed(0)

pen.color('red', 'pink')

详细解释

1.  pen = turtle.Turtle() 

创建一支画笔,所有绘制动作都由这支笔完成。

2.  pen.hideturtle() 

隐藏画笔箭头,让画面更干净。

3.  pen.speed(0) 

设置绘画速度:

- 1~10 越来越快

- 0 是最快模式,瞬间画完

4.  pen.color('red', 'pink') 

第一个颜色  red :边框颜色

第二个颜色  pink :填充颜色

模块 3:爱心数学公式(核心)

python  

def heart_func(t):

    x = 16 * math.sin(t) ** 3

    y = 13 * math.cos(t) - 5 * math.cos(2 * t) - 2 * math.cos(3 * t) - math.cos(4 * t)

    return x, y

这是整个爱心的灵魂,是经典的爱心参数方程。

数学原理详细说明

爱心不是圆,也不是椭圆,而是一条特殊参数曲线。

参数 t 相当于角度,从 0 到 2π 一圈。

x 坐标公式

plaintext  

x = 16·sin³(t)

- sin(t) 在 [-1,1] 之间

- 三次方让形状更“向内收缩”,形成爱心上半部分凹陷

y 坐标公式

plaintext  

y = 13cos(t) − 5cos(2t) − 2cos(3t) − cos(4t)

- 多层余弦叠加

- 构造出爱心底部尖、两侧饱满、上方凹陷的形状

为什么这个公式能画爱心?

- 高次谐波(2t、3t、4t)让曲线产生向内收缩的轮廓

- 系数经过精心调整,形成对称、美观的爱心

- 这是计算机图形学中最经典的爱心公式

模块 4:循环绘制爱心轮廓

python  

pen.begin_fill()

for i in range(600):

    t = math.radians(i)

    x, y = heart_func(t)

    pen.goto(x * 10, y * 10)

pen.end_fill()

逐句拆解

1.  pen.begin_fill() 

开始填充区域,之后画的闭合图形会被填充颜色。

2.  for i in range(600) 

循环 600 次,生成 600 个点,点越多线条越平滑。

3.  t = math.radians(i) 

将角度 i(0~599)转为弧度

math 库只认弧度,不认角度。

4.  x, y = heart_func(t) 

调用函数,得到爱心上一个点的坐标。

5.  pen.goto(x * 10, y * 10) 

移动画笔到该坐标

乘以 10 是放大爱心,否则太小看不清。

6.  pen.end_fill() 

结束填充,自动闭合图形并上色。

模块 5:绘制中心文字

python  

pen.penup()

pen.goto(0, -50)

pen.color("#c70039")

pen.write("I ❤️ Python", font=("Microsoft YaHei", 18, "bold"), align="center")

详细解释

1.  pen.penup() 

抬笔,移动时不画线。

2.  pen.goto(0, -50) 

移动到爱心中心偏下位置。

3.  pen.color("#c70039") 

深红色文字,更醒目。

4.  pen.write(...) 

参数:

- 文字内容

- font:字体、字号、加粗

- align="center":居中对齐

模块 6:保持窗口打开

python  

turtle.done()

作用:阻止程序运行完自动退出,让窗口一直显示。

不加这行,画完会立刻关闭。

四、运行过程完整流程(从启动到结束)

1. 程序启动

导入 turtle、math → 创建窗口 → 设置背景色、标题。

2. 画笔准备

隐藏箭头 → 设置最快速度 → 设置红边粉填充。

3. 进入循环绘制

循环 600 次:

- 计算角度 t

- 代入爱心公式得到 (x,y)

- 画笔移动到该点

- 自动连线形成轮廓

4. 填充颜色

begin_fill 与 end_fill 之间的闭合曲线自动填充粉色。

5. 绘制文字

抬笔移动 → 写字 → 居中显示。

6. 程序挂起

turtle.done() 阻塞主线程,窗口保持。

五、数学原理深度拓展(可写进报告)

1. 参数方程是什么?

普通函数:y = f(x)

参数方程:x = f(t), y = g(t)

t 是参数,可理解为“时间/角度”。

爱心无法用 y=f(x) 简单表达,必须用参数方程。

2. 为什么用 sin、cos?

- 正弦、余弦具有周期性

- 能自然形成闭合曲线

- 高次组合可以构造复杂对称形状

3. 系数调整对爱心的影响

- 16:控制爱心宽度

- 13、5、2、1:控制上下饱满度与尖度

修改数值会变成:扁爱心、瘦爱心、怪异形状。

4. 点数量与平滑度

range(200):棱角明显

range(600):非常光滑

range(1000):更流畅但速度略慢

六、可扩展修改方向(丰富报告内容)

1. 改变颜色

python  

pen.color('darkred', 'hotpink')

screen.bgcolor('black')

2. 改变大小

修改放大倍数:

python  

pen.goto(x * 12, y * 12)

3. 动态渐变色爱心

可通过循环中不断修改 pencolor 实现彩虹爱心。

4. 加动态跳动效果

用定时器不断缩放爱心大小,实现呼吸效果。

5. 加名字表白

python  

pen.write("I Love You", ...)

最新文章

随机文章