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

举报
Lucifer三思而后行 发表于 2021/07/31 16:31:33 2021/07/31
【摘要】 Python还能画画,哈哈,我画了一个☀️?还有蜡笔小新?

前言

上一篇写了个温度转换的小程序,颇有点小成就感。听大佬说,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不止可以爬虫,还能画图,真有趣,我还见过有朋友画 蜡笔小新 ,分享给朋友们看一下:
在这里插入图片描述
真有趣!!!真乃神人也~ 🙉


本次分享到此结束啦~

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。