用 Python 画一只福鼠

简介: 用 Python 画一只福鼠

今年这个鼠年,尽管只是刚过了一个开头,但现实仿佛把我们很多年才需要经历的不好的事情,都在一瞬间抛向了我们,这个鼠年好像缺了点福气,本节我们使用 Python 画一只福鼠,为大家增添点福气,我们需要用到的是 turtle 库。


头部


首先,我们画福鼠的头部,头部主要包括:眼睛、耳朵、鼻子、胡子、牙齿等,代码实现如下所示:


import turtle
def head():
    turtle.color('black')
    # 脸轮廓
    turtle.fillcolor('#FFE4B5')
    turtle.begin_fill()
    # 落笔
    turtle.pd()
    # 画一个半径为指定值的圆
    turtle.circle(50)
    # 提笔
    turtle.pu()
    turtle.end_fill()
    # 移动到指定坐标位置,参数 1 代表 x 轴位置,参数 2 代表 y 轴位置
    turtle.goto(50, 60)
    turtle.pd()
    turtle.circle(25, 255)
    turtle.pu()
    turtle.goto(60, 80)
    turtle.pd()
    turtle.circle(-10, -200)
    turtle.pu()
    turtle.goto(-50, 60)
    turtle.pd()
    # 按逆时针改变行进方向
    turtle.seth(180)
    turtle.circle(-25, 255)
    turtle.pu()
    turtle.goto(-60, 80)
    turtle.pd()
    turtle.circle(10, -200)
    turtle.pu()
    # 眼睛
    turtle.goto(10, 65)
    turtle.seth(45)
    turtle.pd()
    turtle.circle(-8, 360)
    turtle.pu()
    turtle.goto(13, 62)
    turtle.fillcolor('black')
    turtle.begin_fill()
    turtle.pd()
    turtle.circle(-4, -360)
    turtle.pu()
    turtle.end_fill()
    turtle.goto(-10, 65)
    turtle.seth(135)
    turtle.pd()
    turtle.circle(8, 360)
    turtle.pu()
    turtle.goto(-13, 62)
    turtle.fillcolor('black')
    turtle.begin_fill()
    turtle.pd()
    turtle.circle(4, 360)
    turtle.pu()
    turtle.end_fill()
    # 鼻子
    turtle.goto(-6, 45)
    turtle.seth(70)
    turtle.fillcolor('red')
    turtle.begin_fill()
    turtle.pd()
    turtle.circle(-6, 150)
    turtle.pu()
    turtle.end_fill()
    turtle.goto(-6, 45)
    turtle.seth(-70)
    turtle.fillcolor('red')
    turtle.begin_fill()
    turtle.pd()
    turtle.circle(6, 150)
    turtle.pu()
    turtle.end_fill()
    # 嘴
    turtle.goto(0, 40)
    turtle.seth(270)
    turtle.pd()
    turtle.forward(7)
    turtle.pu()
    turtle.seth(200)
    turtle.pd()
    turtle.circle(-15, 60)
    turtle.pu()
    turtle.goto(0, 33)
    turtle.seth(-20)
    turtle.pd()
    turtle.circle(15, 60)
    turtle.pu()
    # 牙齿
    turtle.goto(0, 33)
    turtle.seth(270)
    turtle.pd()
    turtle.forward(13)
    turtle.seth(180)
    turtle.forward(6)
    turtle.seth(90)
    turtle.forward(13)
    turtle.pu()
    turtle.goto(6, 33)
    turtle.seth(270)
    turtle.pd()
    turtle.forward(13)
    turtle.seth(180)
    turtle.forward(6)
    turtle.pu()
    # 胡子
    turtle.goto(30, 30)
    turtle.seth(8)
    turtle.pd()
    turtle.circle(-40, 40)
    turtle.pu()
    turtle.goto(30, 25)
    turtle.seth(-5)
    turtle.pd()
    turtle.circle(-40, 40)
    turtle.pu()
    turtle.goto(30, 20)
    turtle.seth(-18)
    turtle.pd()
    turtle.circle(-40, 40)
    turtle.pu()
    turtle.goto(-30, 30)
    turtle.seth(172)
    turtle.pd()
    turtle.circle(40, 40)
    turtle.pu()
    turtle.goto(-30, 25)
    turtle.seth(188)
    turtle.pd()
    turtle.circle(40, 40)
    turtle.pu()
    turtle.goto(-30, 20)
    turtle.seth(196)
    turtle.pd()
    turtle.circle(40, 40)
    turtle.pu()


image.png


帽子

接下来给福鼠画一顶帽子,我们打算把这顶帽子画得古风一点,原型选了电视剧中宋朝官员的官帽,代码实现如下所示:


def hat():
    turtle.goto(-20, 97)
    turtle.pd()
    turtle.seth(80)
    turtle.forward(20)
    turtle.seth(60)
    turtle.circle(-20, 140)
    turtle.seth(-85)
    turtle.forward(18)
    turtle.pu()
    turtle.goto(50, 115)
    turtle.pd()
    turtle.goto(-50, 115)
    turtle.pu()
    turtle.end_fill()
    turtle.goto(19, 115)
    turtle.pd()
    turtle.goto(50, 115)
    turtle.seth(0)
    turtle.fillcolor('gold2')
    turtle.begin_fill()
    turtle.circle(10)
    turtle.seth(90)
    turtle.circle(10, 90)
    turtle.seth(0)
    turtle.circle(10, 90)
    turtle.seth(270)
    turtle.circle(10, 90)
    turtle.seth(180)
    turtle.circle(10, 90)
    turtle.pu()
    turtle.end_fill()
    turtle.goto(-19, 115)
    turtle.pd()
    turtle.goto(-50, 115)
    turtle.seth(0)
    turtle.fillcolor('gold2')
    turtle.begin_fill()
    turtle.circle(10)
    turtle.seth(90)
    turtle.circle(10, 90)
    turtle.seth(0)
    turtle.circle(10, 90)
    turtle.seth(270)
    turtle.circle(10, 90)
    turtle.seth(180)
    turtle.circle(10, 90)
    turtle.pu()
    turtle.end_fill()


image.png


身体

我们知道福鼠本身并不是真实存在的,而是一种以动物为原型的虚拟化形象,这种形象一般都是头部保留了动物本身的面貌,而身体是人类身体的形状,比如:西游记中孙悟空、猪八戒就是这样的,这里我们也把福鼠的身体画成人身体的形状,代码实现如下所示:


def body():
    # 上半身
    turtle.goto(-25, 8)
    turtle.seth(240)
    turtle.pd()
    turtle.circle(150, 15)
    turtle.seth(270)
    turtle.circle(40, 15)
    turtle.circle(15, 65)
    turtle.seth(0)
    turtle.forward(10)
    turtle.circle(10, 100)
    turtle.seth(90)
    turtle.circle(10, 100)
    turtle.seth(180)
    turtle.forward(10)
    turtle.pu()
    turtle.goto(25, 8)
    turtle.seth(-60)
    turtle.pd()
    turtle.circle(-150, 15)
    turtle.seth(270)
    turtle.circle(-40, 15)
    turtle.circle(-15, 65)
    turtle.seth(180)
    turtle.forward(10)
    turtle.circle(-10, 100)
    turtle.seth(90)
    turtle.circle(-10, 100)
    turtle.seth(0)
    turtle.forward(10)
    turtle.pu()
    turtle.goto(-20, 4)
    turtle.pd()
    turtle.goto(-16, -4)
    turtle.goto(16, -4)
    turtle.goto(20, 4)
    turtle.pu()
    turtle.goto(0, -5)
    turtle.pd()
    turtle.goto(0, -50)
    turtle.pu()
    turtle.goto(-30, -48)
    turtle.pd()
    turtle.goto(-30, -60)
    turtle.pu()
    turtle.goto(30, -48)
    turtle.pd()
    turtle.goto(30, -60)
    turtle.pu()
    turtle.goto(-30, -55)
    turtle.pd()
    turtle.goto(30, -55)
    turtle.pu()
    turtle.goto(-30, -60)
    turtle.pd()
    # 参数 1 为绘制颜色,参数 2 为填充颜色
    turtle.color('black', 'red')
    turtle.begin_fill()
    turtle.goto(30, -60)
    turtle.pu()
    # 下半身
    turtle.goto(-25, -60)
    turtle.pd()
    turtle.goto(-35, -100)
    turtle.goto(-20, -100)
    turtle.goto(-0, -60)
    turtle.goto(20, -100)
    turtle.goto(35, -100)
    turtle.goto(25, -60)
    turtle.end_fill()
    turtle.pu()
    turtle.goto(-33, -100)
    turtle.pd()
    turtle.color('black', 'blue')
    turtle.begin_fill()
    turtle.seth(270)
    turtle.circle(6, 180)
    turtle.end_fill()
    turtle.pu()
    turtle.goto(33, -100)
    turtle.pd()
    turtle.color('black', 'blue')
    turtle.begin_fill()
    turtle.seth(270)
    turtle.circle(-6, 180)
    turtle.end_fill()
    turtle.pu()

image.png


文字

福鼠当然少不了祝福语,我找了四句:鼠你有钱、鼠你健康、鼠你快乐、鼠你幸运,最后,我们把这四个词语分别画在福鼠的四周,代码实现如下所示:


def word():
    turtle.color('red')
    turtle.goto(-30, 150)
    turtle.pd()
    turtle.write('鼠', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(-10, 150)
    turtle.pd()
    turtle.write('你', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(10, 150)
    turtle.pd()
    turtle.write('有', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(30, 150)
    turtle.pd()
    turtle.write('钱', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(-30, -150)
    turtle.pd()
    turtle.write('鼠', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(-10, -150)
    turtle.pd()
    turtle.write('你', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(10, -150)
    turtle.pd()
    turtle.write('健', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(30, -150)
    turtle.pd()
    turtle.write('康', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(-90,-10)
    turtle.pd()
    turtle.write('鼠', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(-90, -30)
    turtle.pd()
    turtle.write('你', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(-90, -50)
    turtle.pd()
    turtle.write('快', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(-90, -70)
    turtle.pd()
    turtle.write('乐', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(90, -10)
    turtle.pd()
    turtle.write('鼠', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(90, -30)
    turtle.pd()
    turtle.write('你', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(90, -50)
    turtle.pd()
    turtle.write('幸', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.goto(90, -70)
    turtle.pd()
    turtle.write('运', move=False, align='center', font=('Arial', 14, 'normal'))
    turtle.pu()
    turtle.hideturtle()


调用代码如下:


if __name__ == '__main__':    head()    hat()    body()    word()    # 隐藏画笔    turtle.hideturtle()    # 停止画笔,但不关闭窗体    turtle.done()


看一下最终效果:


image.png


总结

本文我们使用 Python 的 turtle 库画了一只福鼠,不知道与大家想象中的福鼠形象一样吗?如果不一样呢,大家可以自己动手把这只福鼠修改成自己理想中的样子。

目录
相关文章
|
5天前
|
机器学习/深度学习 人工智能 前端开发
Python中的模块化编程
【6月更文挑战第17天】Python模块化编程与软件架构设计的关键在于拆分任务到独立模块,提高代码的可维护性、可重用性和可扩展性。例如,学生管理系统可分解为录入、查询和删除模块。MVC和MVVM架构模式有助于组织代码,而微服务和函数式编程将在未来发展中扮演重要角色。通过示例代码,读者能学习如何实现这些概念,提升项目开发效率和质量。
153 57
|
12天前
|
测试技术 虚拟化 云计算
GitHub高赞!速通Python编程基础手册,被玩出花了!
随着云时代的来临,Python 语言越来越被程序开发人员喜欢和使用,因为其不仅简单易学,而且还有丰富的第三方程序库和相应完善的管理工具。 从命令行脚本程序到 GUI程序,从图形技术到科学计算,从软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有 Python 的身影。 今天给小伙伴们分享的这份手册采用以任务为导向的编写模式,全面地介绍了 Python 编程基础及其相关知识的应用,讲解了如何利用 Python 的知识解决部分实际问题。
GitHub高赞!速通Python编程基础手册,被玩出花了!
|
2天前
|
数据挖掘 数据处理 Python
Python编程入门:从基础到实践
【6月更文挑战第26天】这篇文章引导读者逐步学习Python编程,从基础语法如变量、数据类型(整数、浮点数、字符串)到条件语句、循环(if/for/while),再到函数定义和模块导入。通过实例展示了Python在文本处理、数据分析(使用pandas)和Web开发(使用Flask)的应用。学习Python能为初学者开启更广阔的技术领域,如面向对象编程、并发和网络编程等。
|
3天前
|
Python
Python多进程编程详细剖析
Python多进程编程详细剖析
13 3
|
9天前
|
开发者 Python
【干货】Python编程惯例
【干货】Python编程惯例
13 1
|
12天前
|
Shell Python
GitHub星标破千Star!Python游戏编程的初学者指南
Python 是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。 目前的编程书籍大多分为两种类型。第一种,与其说是教编程的书,倒不如说是在教“游戏制作软件”,或教授使用一种呆板的语言,使得编程“简单”到不再是编程。而第二种,它们就像是教数学课一样教编程:所有的原理和概念都以小的应用程序的方式呈现给读者。
|
12天前
|
机器学习/深度学习 存储 自然语言处理
惊艳!老司机熬夜总结的Python高性能编程,高效、稳定、快速!
Python 语言是一种脚本语言,其应用领域非常广泛,包括数据分析、自然语言处理机器学习、科学计算、推荐系统构建等。 能够轻松实现和代码跑得够快之间的取舍却是一个世人皆知且令人惋惜的现象而这个问题其实是可以解决的。 有些人想要让顺序执行的过程跑得更快。有些人需要利用多核架构、集群,或者图形处理单元的优势来解决他们的问题。有些人需要可伸缩系统在保证可靠性的前提下酌情或根据资金多少处理更多或更少的工作。有些人意识到他们的编程技巧,通常是来自其他语言,可能不如别人的自然。
|
13天前
|
存储 Python 索引
【Python编程挑战】:单链表实现技巧与最佳实践
【Python编程挑战】:单链表实现技巧与最佳实践
|
13天前
|
数据库 云计算 Python
不容错过的经典!Python核心编程(第3版)教你用实例学Python!
在学完任何其他入门类的 Python 图书之后,你可能觉得已经掌握了 Python 而且还觉得学得不错,并为此感到自豪。通过完成大量练习之后,你将会对自己新掌握的 Python 编程技能拥有更多信心。 但是,你可能仍然会有这样的疑问,“现在该怎么办?我能用 Python 编写哪种类型的应用程序呢?”或许你是为了一个相当小众的工作项目而学习使用 Python,你可能会考虑“我还能用 Python 写点其他的吗?”
|
14天前
|
SQL 前端开发 Java
Python GUI编程(Tkinter)
Python GUI编程(Tkinter)

热门文章

最新文章