阅读 3924

✨ Python入门 ✨ 3️⃣ 画一个大太阳 ☀️,甚至还能画个蜡笔小❤️|Python 主题月

本文正在参加「Python主题月」,详情查看 活动链接

前言

上一篇写了个温度转换的小程序,颇有点小成就感。听大佬说,Python还能画图,我就虚心请教了一下,原来是用一个☝🏻函数(海龟绘图):turtle — Turtle graphics

于是,我跟教练说:这次我想画一个大太阳☀️~

在这里插入图片描述

加油💪🏻ヾ(◍°∇°◍)ノ゙

在这里插入图片描述

你没看错,就是这个大太阳!!!

正文开始

在开始之前,先简单介绍下海龟绘图函数吧!

可参考官方教程:docs.python.org/zh-cn/3/lib…

下面列一下本文可能需要用到的一些方法:

setup() 设置
showturtle() | st() 显示海龟
pensize() | width() 画笔粗细
pencolor() 画笔颜色
penup() | pu() | up() 画笔抬起
pendown() | pd() | down() 画笔落下
goto() | setpos() | setposition() 前往/定位
setheading() | seth() 设置朝向
color() 颜色
forward() | fd() 前进
left() | lt() 左转
begin_fill() 开始填充
end_fill() 结束填充
circle() 画圆
exitonclick() 当点击时退出
复制代码

大致了解一下就行,开始实战吧!

1 创建项目文件

第一步☝🏻,自然是打开PyCharm,麻利的先创建一个新项目,再创建一个Python文件😌: 在这里插入图片描述

2 理清逻辑

不管编写什么程序前,我的习惯:逻辑一定要先缕清楚!!!

由于海龟绘图函数只能一笔画完,因此可能无法达到 ☀️ 的展示效果;所以我粗略手画了一下: 在这里插入图片描述 ☀️ 一眼看去,大概组成:1个圆 和 8个 等边三角形。所以,大概逻辑就是:

  • 第一步: 把这个图形切割为8个部分,每个部分如下图所示:

在这里插入图片描述

  • 第二步: 用海龟绘图画出这个部分,分为一个等边三角形和一个弧线:
from turtle import *
# 画笔抬起
pu()
# 定位开始位置
goto(-30, 100)
# 画笔落下
pd()
# 设置朝向
seth(0)
pencolor('#EEC211')
# 前进80步
fd(80)
# 向左120度
lt(120)
# 前进80步
fd(80)
# 向左120度
lt(120)
# 前进80步
fd(80)
# 向左143度
lt(143)
# 向下画半径为100的弧线 68步
circle(-100, 68)
# 窗口手动点击关闭
exitonclick()
复制代码

运行后效果如下: 在这里插入图片描述

  • 第三步: for循环重复执行8次,拼接出完整太阳形状:
from turtle import *
# 画笔抬起
pu()
# 定位开始位置
goto(-30, 100)
# 画笔落下
pd()
# 设置朝向
seth(0)
pencolor('#EEC211')

# 循环8次
for i in range(8):
    # 前进80步
    fd(80)
    # 向左120度
    lt(120)
    # 前进80步
    fd(80)
    # 向左120度
    lt(120)
    # 前进80步
    fd(80)
    # 向左143度
    lt(143)
    # 向下画半径为100的弧线 68步
    circle(-100, 68)

# 窗口手动点击关闭
exitonclick()
复制代码

运行效果如下: 在这里插入图片描述

  • 第四步: 给画好的图形上色
from turtle import *
# 画笔抬起
pu()
# 定位开始位置
goto(-30, 100)
# 画笔落下
pd()
# 设置朝向
seth(0)
pencolor('#EEC211')
# 设置颜色
color('#EEC211')

# 循环8次
for i in range(8):
    # 开始填充颜色
    begin_fill()
    # 前进80步
    fd(80)
    # 向左120度
    lt(120)
    # 前进80步
    fd(80)
    # 向左120度
    lt(120)
    # 前进80步
    fd(80)
    # 向左143度
    lt(143)
    # 向下画半径为100的弧线 68步
    circle(-100, 68)
    # 结束填充
    end_fill()

# 窗口手动点击关闭
exitonclick()
复制代码

运行效果如下: 在这里插入图片描述 发现个小问题,中间部分没有填充颜色,得想个办法给它加上。

  • 第五步: 中间部位填充颜色

讲一下大概思路,就是在中间部位再画一个圆,然后覆盖填充颜色即可。

# 中心部分上色
# 设置颜色
color('#EEC211')
begin_fill()
left(12)
circle(-145)
end_fill()
exitonclick()
复制代码

运行效果如下所示: 在这里插入图片描述

  • 最后一步: 整合代码,封装函数
# 画太阳
def drawSun():
    for i in range(8):
        # 开始填充颜色
        begin_fill()
        # 前进80步
        fd(80)
        # 向左120度
        lt(120)
        # 前进80步
        fd(80)
        # 向左120度
        lt(120)
        # 前进80步
        fd(80)
        # 向左143度
        lt(143)
        # 向下画半径为100的弧线 68步
        circle(-100, 68)
        # 结束填充
        end_fill()

# 主程序
def main():
    # 画笔颜色
    pencolor('#EEC211')
    # 画笔抬起
    pu()
    # 定位开始位置
    goto(-20, 100)
    # 画笔落下
    pd()
    # 设置朝向
    seth(0)
    # 设置颜色
    color('#EEC211')
    # 画太阳
    drawSun()
    # 中心部分上色
    begin_fill()
    left(12)
    circle(-145)
    end_fill()
    exitonclick()
复制代码

运行效果如下: 在这里插入图片描述 欧克,大功告成!✌️ 今日份的学习,就到这了,下期再见~ 👋

完整代码如下:

from turtle import *

def drawSun():
    for i in range(8):
        # 开始填充颜色
        begin_fill()
        # 前进80步
        fd(80)
        # 向左120度
        lt(120)
        # 前进80步
        fd(80)
        # 向左120度
        lt(120)
        # 前进80步
        fd(80)
        # 向左143度
        lt(143)
        # 向下画半径为100的弧线 68步
        circle(-100, 68)
        # 结束填充
        end_fill()


def main():
    # 画笔颜色
    pencolor('#EEC211')
    # 画笔抬起
    pu()
    # 定位开始位置
    goto(-20, 100)
    # 画笔落下
    pd()
    # 设置朝向
    seth(0)
    # 设置颜色
    color('#EEC211')
    # 画太阳
    drawSun()
    # 中心部分上色
    begin_fill()
    left(12)
    circle(-145)
    end_fill()
    exitonclick()

main()
复制代码

写在最后

不学不知道,一学吓一跳,原来Python不止可以爬虫,还能画图,真有趣,我还见过有朋友画 蜡笔小新 ,分享给朋友们看一下: 在这里插入图片描述 真有趣!!!真乃神人也~ 🙉


本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

文章分类
后端
文章标签