python趣味代码_趣味项目:用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()#必须是乌龟图形程序中最后一个语句

结果如下

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

结果如下:

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

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

结果如下:

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

49d5fcebb65527d4502abd7fa57eb25f.gif
  • 如果将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个向量处。

0a4c64f8d55020a389ee5f787d26b9b0.gif

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

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()  

结果如下:

c218050c41f611a3282c3c367daed06b.gif

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值