趣味项目:用Python代码做个月饼送给你

来源:公众号【数恪】

原创作者:Janie(微信L926926z,加微信请备注来源)

 

趣味项目:用Python代码做个月饼送给你_第1张图片

中秋节马上到了,Janie用python来给大家画个小月饼,祝大家中秋快乐!

 

所用工具

1、Python中的turtle包

2、对Python似火的热情

 

先来介绍一番

Turtle作图又叫海龟作图,是Python中比较有趣的一个模块,功能强大,使用方便。简单来说,比如有一块空地,以中央为原点,画条横轴x,纵轴y,然后一只小乌龟以(0,0)作为起点,开始按照函数的指令来爬行,爬行的过程中会出现轨迹,还可以将爬行的地方填充一下颜色。这样,一个完美的图形就出现了。

是不是很好理解呢?

 

先开始一段小案例,便于理解。

  • 画个同心圆

import turtle#每种解释分别出个案例
turtle.circle(100)#第一个圈圈大小
turtle.penup()#将提起笔,移动时无图。注释掉的话图形就会相连
turtle.goto(0, 50)#提笔画第二个圈圈时起点往上移动50个向量
turtle.pendown()#将笔放下,移动时绘图。注释掉的话移动时无图了
turtle.circle(50)#第二个圈圈大小
turtle.done()#必须是乌龟图形程序中最后一个语句

结果如下

 

趣味项目:用Python代码做个月饼送给你_第2张图片

 

  • 如果注释掉turtle.penup()呢?

import turtle#每种解释分别出个案例
turtle.circle(100)#第一个圈圈大小
#turtle.penup()#将提起笔,移动时无图。注释掉的话图形就会相连
turtle.goto(0, 50)#提笔画第二个圈圈时起点往上移动50个向量
turtle.pendown()#将笔放下,移动时绘图。注释掉的话移动时无图了
turtle.circle(50)#第二个圈圈大小
turtle.done()#必须是乌龟图形程序中最后一个语句

结果如下:

注释掉之后两个圆连一起了,所以turtle.penup()是提起画笔的意思。

趣味项目:用Python代码做个月饼送给你_第3张图片

 

  • 如果注释掉turtle.pendown()呢?

import turtle#每种解释分别出个案例
turtle.circle(100)#第一个圈圈大小
turtle.penup()#将提起笔,移动时无图。注释掉的话图形就会相连
turtle.goto(0, 50)#提笔画第二个圈圈时起点往上移动50个向量
#turtle.pendown()#将笔放下,移动时绘图。注释掉的话移动时无图了
turtle.circle(50)#第二个圈圈大小
turtle.done()#必须是乌龟图形程序中最后一个语句

结果如下:

注释掉之后去画外圆的时候没有笔迹了,所以turtle.pendown()需要将笔放下。

 

趣味项目:用Python代码做个月饼送给你_第4张图片

 

  • 如果将turtle.goto(0, 50)改成turtle.goto(0, 0)呢?

import turtle#每种解释分别出个案例
turtle.circle(100)#第一个圈圈大小
turtle.penup()#将提起笔,移动时无图。注释掉的话图形就会相连
#turtle.goto(0, 0)#提笔画第二个圈圈时起点往上移动50个向量
turtle.pendown()#将笔放下,移动时绘图。注释掉的话移动时无图了
turtle.circle(50)#第二个圈圈大小
turtle.done()#必须是乌龟图形程序中最后一个语句

结果如下:

改成(0,0)之后,画第二个圆的起点和第一个圆的起点一样了。所以turtle.goto(0, 50)是将画第二个圆的起点落于(0,0)点上面50个向量处。

趣味项目:用Python代码做个月饼送给你_第5张图片

普及了一点小知识后,画月饼正式开始了!

import turtle

def goto(x, y):#定义提笔的位置
    turtle.penup() #将笔提起,移动时无图
    turtle.goto(x, y)
    turtle.pendown() #将笔放下,移动时绘图。


def yuebing_wai():
    turtle.pensize(20)#画笔调粗点
    turtle.color( "#F8CD32","#FBA92D")#填充颜色,F8CD32是圆圈的边缘颜色,FBA92D是圆圈的填充颜色
    goto(0, -200)#画笔起点位于(0,0)点的下方200向量处
    turtle.begin_fill()#准备开始填充
    turtle.circle(200)#定义半径
    turtle.end_fill()#填充结束


def yuebing_zhong():
    goto(0, 0)#画笔起点位于(0,0)处
    turtle.color("#F0BE7C")
    for _ in range(20):#_是占位符,表示临时变量,仅用一次,后面无需再用到 
        turtle.right(18)#顺时针移动18度
        turtle.begin_fill()
        turtle.forward(220)#向前移动的距离
        turtle.circle(40, 180)#上一条向前移动220之后,开始画半径40的半圆
        turtle.goto(0, 0)#画完半圆之后回到(0,0)
        turtle.right(360)#顺时针转个360度
        turtle.end_fill()


def yuebing_nei():#逻辑同上
    turtle.right(360)
    turtle.color('#F5E16F')#内层颜色
    goto(0, -180)
    for _ in range(12):
        turtle.begin_fill()
        turtle.circle(60, 120)
        turtle.left(180)
        turtle.circle(60, 120)
        turtle.end_fill()


def fu():#
    turtle.right(50)
    goto(-70, -80)#更高坐标尽量使字靠中间
    turtle.color("Gold")#颜色
    turtle.write("福", font=("华文隶书", 120, "bold"))
    turtle.done()


if __name__ == '__main__':
    turtle.speed(90)
    yuebing_zhong()
    yuebing_wai()
    yuebing_nei()
    fu()


turtle.done()  

结果如下:

 

趣味项目:用Python代码做个月饼送给你_第6张图片

怎么样?是不是很神奇呢?

 

最后提前祝大家中秋快乐!

你可能感兴趣的:(Python,Turtle,大数据,Python,程序员,Turtle)