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

Posted Lucifer三思而后行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了✨ Python入门 ✨ 3️⃣ 画一个大太阳 ☀️,甚至还能画个蜡笔小❤️相关的知识,希望对你有一定的参考价值。

前言

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

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

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


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

正文开始

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

可参考官方教程:https://docs.python.org/zh-cn/3/library/turtle.html

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

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不止可以爬虫,还能画图,真有趣,我还见过有朋友画 蜡笔小新 ,分享给朋友们看一下:

真有趣!!!真乃神人也~ 🙉


本次分享到此结束啦~

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

以上是关于✨ Python入门 ✨ 3️⃣ 画一个大太阳 ☀️,甚至还能画个蜡笔小❤️的主要内容,如果未能解决你的问题,请参考以下文章

有人不会画地图||❤️这11个Python 6⃣️6⃣️6⃣️工具来帮忙❤️

✨ Python入门 ✨ 2️⃣ 写一个温度转换小程序❤️

✨ Python入门 ✨ 2️⃣ 写一个温度转换小程序❤️

✨ Python入门 ✨ 1️⃣ 环境配置 ❤️ Hello World

✨ Python入门 ✨ 1️⃣ 环境配置 ❤️ Hello World

Linux入门:进程控制