海龟画图

发布时间 2023-04-19 22:37:40作者: 朱阿九

{
"cells": [
{
"cell_type": "markdown",
"id": "3d99180e",
"metadata": {},
"source": [
"## 画布知识\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6a10c0cc",
"metadata": {},
"outputs": [],
"source": [
"(1)画布(canvas)\n",
"\n",
"画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。\n",
"\n",
"设置画布大小\n",
"\n",
"turtle.screensize(canvwidth=None,canvheight=None,bg=None),参数分别为画布的宽(单位像素),高,背景颜色。\n",
"\n",
"\n",
"如:\n",
"\n",
"turtle.screensize(800,600,\"green\")\n",
"\n",
"turtle.screensize()#返回默认大小(400,300)\n",
"\n",
"turtle.setup(width=0.5,height=0.75,startx=None,starty=None) 参数:width,height:输入宽和高为整数时,表示像素;为小数时,表示占据 电脑屏幕的比例,(startx,starty):这一坐标表示矩形窗口左上角顶点的位置,如果为空,则 窗口位于屏幕中心。\n",
"\n",
" \n",
"\n",
"如:\n",
"\n",
"turtle.setup(width=0.6,height=0.6)\n",
"\n",
"turtle.setup(width=800,height=800,startx=100,starty=100)\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"id": "a027982a",
"metadata": {},
"source": [
"### 画笔"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9cd6e864",
"metadata": {},
"outputs": [],
"source": [
"\n",
"i)画笔的状态\n",
"\n",
"在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向),turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。\n",
"\n",
" ii)画笔的属性\n",
"\n",
"画笔(画笔的属性,颜色、画线的宽度等)\n",
"\n",
"turtle.pensize(): 设置画笔的宽度;\n",
"\n",
"turtle.pencolor(): 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如\"green\",\"red\",也可以是RGB3元组。\n",
"\n",
"turtle.speed(speed): 设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。\n",
"\n",
"(3)绘图窗口的原点(0,0)在正中间。默认情况下,海龟向正右方移动。\n",
"\n",
"(4)操纵海龟绘图有着许多的命令,这些命令可以划分为两种: 一种为运动命令,一种为画笔控制命令\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "f401ad37",
"metadata": {},
"source": [
"### 运动控制"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6315e09e",
"metadata": {},
"outputs": [],
"source": [
"\n",
"i)运动命令:\n",
"\n",
"forward(d) 向前移动距离d代表距离\n",
"\n",
"backward(d) 向后移动距离d代表距离\n",
"\n",
"right(degree) 向右转动多少度\n",
"\n",
"left(degree) 向左转动多少度\n",
"\n",
"goto(x,y) 将画笔移动到坐标为(x,y)的位置\n",
"\n",
"stamp() 绘制当前图形\n",
"\n",
"speed(speed) 画笔绘制的速度范围[0,10]整数\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"id": "bc22d498",
"metadata": {},
"source": [
"### 画笔控制"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "79c70cca",
"metadata": {},
"outputs": [],
"source": [
"ii)画笔控制命令:\n",
"\n",
"down() 画笔落下,移动时绘制图形\n",
"\n",
"up() 画笔抬起,移动时不绘制图形\n",
"\n",
"setheading(degree) 海龟(turtle)朝向,degree代表角度\n",
"\n",
"reset() 恢复所有设置\n",
"\n",
"pensize(width) 画笔的宽度\n",
"\n",
"pencolor(colorstring) 画笔的颜色\n",
"\n",
"fillcolor(colorstring) 绘制图形的填充颜色\n",
"\n",
"circle(radius,extent) 绘制一个圆形,其中radius为半径,extent为度数,例如若extent为120,则画一个三分之一圆;"
]
},
{
"cell_type": "markdown",
"id": "457b424d",
"metadata": {},
"source": [
"# 举例:作一个五角星"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "700024cb",
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"color('red','red')\n",
"begin_fill()\n",
"for i in range(5):\n",
" fd(200)\n",
" rt(144)\n",
"end_fill()\n",
"done()"
]
},
{
"cell_type": "markdown",
"id": "e4dd593e",
"metadata": {},
"source": [
"### 太阳花\n"
]
},
{
"cell_type": "markdown",
"id": "46c16b24",
"metadata": {},
"source": [
"### 举例:画一条蟒蛇"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "a506c4ef",
"metadata": {},
"outputs": [],
"source": [
"#PythonDraw.py\n",
"import turtle\n",
"#turtle.setup(650,350,200,200)\n",
"turtle.penup()\n",
"turtle.fd(-250)\n",
"turtle.pendown()\n",
"turtle.pensize(25)\n",
"turtle.pencolor(\"purple\")\n",
"turtle.seth(-40)\n",
"for i in range(4):\n",
" turtle.circle(40,80)\n",
" turtle.circle(-40,80)\n",
"turtle.circle(40,80/2)\n",
"turtle.fd(40)\n",
"turtle.circle(16,180)\n",
"turtle.fd(40*2/3)"
]
},
{
"cell_type": "markdown",
"id": "dab5f802",
"metadata": {},
"source": [
"### 五角星"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "54b03799",
"metadata": {},
"outputs": [],
"source": [
"# coding=utf-8\n",
"\n",
"import turtle\n",
"\n",
"import time\n",
"\n",
" \n",
"\n",
"turtle.pensize(5)\n",
"\n",
"turtle.pencolor(\"yellow\")\n",
"\n",
"turtle.fillcolor(\"red\")\n",
"\n",
" \n",
"\n",
"turtle.begin_fill()\n",
"\n",
"for _ in range(5):\n",
"\n",
" turtle.forward(200)\n",
"\n",
" turtle.right(144)\n",
"\n",
"turtle.end_fill()\n",
"\n",
"time.sleep(2)\n",
"\n",
" \n",
"\n",
"turtle.penup()\n",
"turtle.goto(-150,-120)\n",
"\n",
"turtle.pensize(5)\n",
"turtle.pencolor(\"yellow\")\n",
"turtle.fillcolor(\"red\") \n",
"turtle.begin_fill()\n",
"for _ in range(5):\n",
" turtle.fd(150)\n",
" turtle.left(144)\n",
"turtle.end_fill()\n",
"time.sleep(2)\n",
"\n",
" \n",
"\n",
"turtle.mainloop()"
]
},
{
"cell_type": "markdown",
"id": "1e357123",
"metadata": {},
"source": [
"### 举例:画一组内切圆"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6b2f223c",
"metadata": {},
"outputs": [],
"source": [
"import turtle\n",
"turtle.pensize(2)\n",
"turtle.circle(10)\n",
"turtle.circle(40)\n",
"turtle.circle(80)\n",
"turtle.circle(120)"
]
},
{
"cell_type": "markdown",
"id": "28277bf1",
"metadata": {},
"source": [
"### 举例:彩色螺旋图"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "4156b2e1",
"metadata": {},
"outputs": [
{
"ename": "Terminator",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mTerminator\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-20-d09ab5a8bb06>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mwidth\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;36m100\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mforward\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m \u001b[0mleft\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m59\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36mleft\u001b[1;34m(angle)\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36mleft\u001b[1;34m(self, angle)\u001b[0m\n\u001b[0;32m 1698\u001b[0m \u001b[1;36m67.0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1699\u001b[0m \"\"\"\n\u001b[1;32m-> 1700\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_rotate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mangle\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1701\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1702\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mpos\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36m_rotate\u001b[1;34m(self, angle)\u001b[0m\n\u001b[0;32m 3275\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msteps\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3276\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_orient\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_orient\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrotate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdelta\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3277\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_update\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3278\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_orient\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mneworient\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3279\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_update\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36m_update\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 2659\u001b[0m \u001b[1;32mreturn\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2660\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mscreen\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_tracing\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2661\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_update_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2662\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_drawturtle\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2663\u001b[0m \u001b[0mscreen\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_update\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# TurtleScreenBase\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36m_update_data\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 2645\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2646\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_update_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2647\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscreen\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_incrementudc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2648\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscreen\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_updatecounter\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2649\u001b[0m \u001b[1;32mreturn\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36m_incrementudc\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1291\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mTurtleScreen\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_RUNNING\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1292\u001b[0m \u001b[0mTurtleScreen\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_RUNNING\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1293\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mTerminator\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1294\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_tracing\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1295\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_updatecounter\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mTerminator\u001b[0m: "
]
}
],
"source": [
"from turtle import *\n",
"colors = ['red', 'purple', 'blue', 'green', 'yellow', 'orange']\n",
"for x in range(360):\n",
" pencolor(colors[x % 6])\n",
" width(x / 100 + 1)\n",
" forward(x)\n",
" left(59)"
]
},
{
"cell_type": "markdown",
"id": "ab4d54a5",
"metadata": {},
"source": [
"### 小猪佩奇"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "94868da8",
"metadata": {
"scrolled": true
},
"outputs": [
{
"ename": "Terminator",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mTclError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36mcircle\u001b[1;34m(radius, extent, steps)\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36mcircle\u001b[1;34m(self, radius, extent, steps)\u001b[0m\n\u001b[0;32m 1991\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mspeed\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mspeed\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1992\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_go\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ml\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1993\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mspeed\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36m_go\u001b[1;34m(self, distance)\u001b[0m\n\u001b[0;32m 1605\u001b[0m \u001b[0mende\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_position\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_orient\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mdistance\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1606\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_goto\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mende\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1607\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36m_goto\u001b[1;34m(self, end)\u001b[0m\n\u001b[0;32m 3158\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcurrentLine\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3159\u001b[1;33m \u001b[0mscreen\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_pointlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcurrentLineItem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3160\u001b[0m self.items[:])\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36m_pointlist\u001b[1;34m(self, item)\u001b[0m\n\u001b[0;32m 755\u001b[0m >>> \"\"\"\n\u001b[1;32m--> 756\u001b[1;33m \u001b[0mcl\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcoords\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 757\u001b[0m \u001b[0mpl\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcl\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mcl\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcl\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m<string>\u001b[0m in \u001b[0;36mcoords\u001b[1;34m(self, *args, **kw)\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\tkinter\\__init__.py\u001b[0m in \u001b[0;36mcoords\u001b[1;34m(self, *args)\u001b[0m\n\u001b[0;32m 2765\u001b[0m self.tk.splitlist(\n\u001b[1;32m-> 2766\u001b[1;33m self.tk.call((self._w, 'coords') + args))]\n\u001b[0m\u001b[0;32m 2767\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mTclError\u001b[0m: invalid command name \".!canvas\"",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[1;31mTerminator\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-21-a4b09ce2c374>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 287\u001b[0m \u001b[0mmain\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 288\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 289\u001b[1;33m \u001b[0mmain\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32m<ipython-input-21-a4b09ce2c374>\u001b[0m in \u001b[0;36mmain\u001b[1;34m()\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmain\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 274\u001b[0m \u001b[0msetting\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#画布、画笔设置\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 275\u001b[1;33m \u001b[0mnose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#鼻子\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 276\u001b[0m \u001b[0mhead\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m69\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m167\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#头\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 277\u001b[0m \u001b[0mears\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m160\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#耳朵\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m<ipython-input-21-a4b09ce2c374>\u001b[0m in \u001b[0;36mnose\u001b[1;34m(x, y)\u001b[0m\n\u001b[0;32m 29\u001b[0m \u001b[0mseth\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 30\u001b[0m \u001b[0mbegin_fill\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 31\u001b[1;33m \u001b[0mcircle\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 32\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m160\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m82\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m45\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 33\u001b[0m \u001b[0mend_fill\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\lib\\turtle.py\u001b[0m in \u001b[0;36mcircle\u001b[1;34m(radius, extent, steps)\u001b[0m\n",
"\u001b[1;31mTerminator\u001b[0m: "
]
}
],
"source": [
"# coding:utf-8\n",
"from turtle import*\n",
"\n",
"def nose(x,y):#鼻子\n",
" pu()\n",
" goto(x,y)\n",
" pd()\n",
" seth(-30)\n",
" begin_fill()\n",
" a=0.4\n",
" for i in range(120):\n",
" if 0<=i<30 or 60<=i<90:\n",
" a=a+0.08\n",
" lt(3) #向左转3度\n",
" fd(a) #向前走a的步长\n",
" else:\n",
" a=a-0.08\n",
" lt(3)\n",
" fd(a)\n",
" end_fill()\n",
"\n",
" pu()\n",
" seth(90)\n",
" fd(25)\n",
" seth(0)\n",
" fd(10)\n",
" pd()\n",
" pencolor(255,155,192)\n",
" seth(10)\n",
" begin_fill()\n",
" circle(5)\n",
" color(160,82,45)\n",
" end_fill()\n",
"\n",
" pu()\n",
" seth(0)\n",
" fd(20)\n",
" pd()\n",
" pencolor(255,155,192)\n",
" seth(10)\n",
" begin_fill()\n",
" circle(5)\n",
" color(160,82,45)\n",
" end_fill()\n",
"\n",
"\n",
"def head(x,y):#头\n",
" color((255,155,192),\"pink\")\n",
" pu()\n",
" goto(x,y)\n",
" seth(0)\n",
" pd()\n",
" begin_fill()\n",
" seth(180)\n",
" circle(300,-30)\n",
" circle(100,-60)\n",
" circle(80,-100)\n",
" circle(150,-20)\n",
" circle(60,-95)\n",
" seth(161)\n",
" circle(-300,15)\n",
" pu()\n",
" goto(-100,100)\n",
" pd()\n",
" seth(-30)\n",
" a=0.4\n",
" for i in range(60):\n",
" if 0<=i<30 or 60<=i<90:\n",
" a=a+0.08\n",
" lt(3) #向左转3度\n",
" fd(a) #向前走a的步长\n",
" else:\n",
" a=a-0.08\n",
" lt(3)\n",
" fd(a)\n",
" end_fill()\n",
"\n",
"\n",
"def ears(x,y): #耳朵\n",
" color((255,155,192),\"pink\")\n",
" pu()\n",
" goto(x,y)\n",
" pd()\n",
" begin_fill()\n",
" seth(100)\n",
" circle(-50,50)\n",
" circle(-10,120)\n",
" circle(-50,54)\n",
" end_fill()\n",
"\n",
" pu()\n",
" seth(90)\n",
" fd(-12)\n",
" seth(0)\n",
" fd(30)\n",
" pd()\n",
" begin_fill()\n",
" seth(100)\n",
" circle(-50,50)\n",
" circle(-10,120)\n",
" circle(-50,56)\n",
" end_fill()\n",
"\n",
"\n",
"def eyes(x,y):#眼睛\n",
" color((255,155,192),\"white\")\n",
" pu()\n",
" seth(90)\n",
" fd(-20)\n",
" seth(0)\n",
" fd(-95)\n",
" pd()\n",
" begin_fill()\n",
" circle(15)\n",
" end_fill()\n",
"\n",
" color(\"black\")\n",
" pu()\n",
" seth(90)\n",
" fd(12)\n",
" seth(0)\n",
" fd(-3)\n",
" pd()\n",
" begin_fill()\n",
" circle(3)\n",
" end_fill()\n",
"\n",
" color((255,155,192),\"white\")\n",
" pu()\n",
" seth(90)\n",
" fd(-25)\n",
" seth(0)\n",
" fd(40)\n",
" pd()\n",
" begin_fill()\n",
" circle(15)\n",
" end_fill()\n",
"\n",
" color(\"black\")\n",
" pu()\n",
" seth(90)\n",
" fd(12)\n",
" seth(0)\n",
" fd(-3)\n",
" pd()\n",
" begin_fill()\n",
" circle(3)\n",
" end_fill()\n",
"\n",
"\n",
"def cheek(x,y):#腮\n",
" color((255,155,192))\n",
" pu()\n",
" goto(x,y)\n",
" pd()\n",
" seth(0)\n",
" begin_fill()\n",
" circle(30)\n",
" end_fill()\n",
"\n",
"\n",
"def mouth(x,y): #嘴\n",
" color(239,69,19)\n",
" pu()\n",
" goto(x,y)\n",
" pd()\n",
" seth(-80)\n",
" circle(30,40)\n",
" circle(40,80)\n",
"\n",
"\n",
"def body(x,y):#身体\n",
" color(\"red\",(255,99,71))\n",
" pu()\n",
" goto(x,y)\n",
" pd()\n",
" begin_fill()\n",
" seth(-130)\n",
" circle(100,10)\n",
" circle(300,30)\n",
" seth(0)\n",
" fd(230)\n",
" seth(90)\n",
" circle(300,30)\n",
" circle(100,3)\n",
" color((255,155,192),(255,100,100))\n",
" seth(-135)\n",
" circle(-80,63)\n",
" circle(-150,24)\n",
" end_fill()\n",
"\n",
"\n",
"def hands(x,y):#手\n",
" color((255,155,192))\n",
" pu()\n",
" goto(x,y)\n",
" pd()\n",
" seth(-160)\n",
" circle(300,15)\n",
" pu()\n",
" seth(90)\n",
" fd(15)\n",
" seth(0)\n",
" fd(0)\n",
" pd()\n",
" seth(-10)\n",
" circle(-20,90)\n",
"\n",
" pu()\n",
" seth(90)\n",
" fd(30)\n",
" seth(0)\n",
" fd(237)\n",
" pd()\n",
" seth(-20)\n",
" circle(-300,15)\n",
" pu()\n",
" seth(90)\n",
" fd(20)\n",
" seth(0)\n",
" fd(0)\n",
" pd()\n",
" seth(-170)\n",
" circle(20,90)\n",
"\n",
"def foot(x,y):#脚\n",
" pensize(10)\n",
" color((240,128,128))\n",
" pu()\n",
" goto(x,y)\n",
" pd()\n",
" seth(-90)\n",
" fd(40)\n",
" seth(-180)\n",
" color(\"black\")\n",
" pensize(15)\n",
" fd(20)\n",
"\n",
" pensize(10)\n",
" color((240,128,128))\n",
" pu()\n",
" seth(90)\n",
" fd(40)\n",
" seth(0)\n",
" fd(90)\n",
" pd()\n",
" seth(-90)\n",
" fd(40)\n",
" seth(-180)\n",
" color(\"black\")\n",
" pensize(15)\n",
" fd(20)\n",
"\n",
"def tail(x,y):#尾巴\n",
" pensize(4)\n",
" color((255,155,192))\n",
" pu()\n",
" goto(x,y)\n",
" pd()\n",
" seth(0)\n",
" circle(70,20)\n",
" circle(10,330)\n",
" circle(70,30)\n",
"\n",
"def setting(): #参数设置\n",
" pensize(4)\n",
" hideturtle()\n",
" colormode(255)\n",
" color((255,155,192),\"pink\")\n",
" setup(840,500)\n",
" speed(10)\n",
"\n",
"def main():\n",
" setting() #画布、画笔设置\n",
" nose(-100,100) #鼻子\n",
" head(-69,167) #头\n",
" ears(0,160) #耳朵\n",
" eyes(0,140) #眼睛\n",
" cheek(80,10) #腮\n",
" mouth(-20,30) #嘴\n",
" body(-32,-8) #身体\n",
" hands(-56,-45) #手\n",
" foot(2,-177) #脚\n",
" tail(148,-155) #尾巴\n",
" done() #结束\n",
"\n",
" main()\n",
"\n",
"main()"
]
},
{
"cell_type": "markdown",
"id": "08db2238",
"metadata": {},
"source": [
"### 时钟"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "5972691e",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Exception in Tkinter callback\n",
"Traceback (most recent call last):\n",
" File \"D:\\Anaconda3\\lib\\tkinter\\__init__.py\", line 1892, in __call__\n",
" return self.func(*args)\n",
" File \"D:\\Anaconda3\\lib\\tkinter\\__init__.py\", line 814, in callit\n",
" func(*args)\n",
" File \"<ipython-input-22-a2699a567059>\", line 199, in Tick\n",
" turtle.tracer(False)\n",
" File \"<string>\", line 5, in tracer\n",
"turtle.Terminator\n"
]
}
],
"source": [
"# coding=utf-8\n",
"\n",
" \n",
"\n",
"import turtle\n",
"\n",
"from datetime import *\n",
"\n",
" \n",
"\n",
"# 抬起画笔,向前运动一段距离放下\n",
"\n",
"def Skip(step):\n",
"\n",
" turtle.penup()\n",
"\n",
" turtle.forward(step)\n",
"\n",
" turtle.pendown()\n",
"\n",
" \n",
"\n",
"def mkHand(name, length):\n",
"\n",
" # 注册Turtle形状,建立表针Turtle\n",
"\n",
" turtle.reset()\n",
"\n",
" Skip(-length * 0.1)\n",
"\n",
" # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。\n",
"\n",
" turtle.begin_poly()\n",
"\n",
" turtle.forward(length * 1.1)\n",
"\n",
" # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。\n",
"\n",
" turtle.end_poly()\n",
"\n",
" # 返回最后记录的多边形。\n",
"\n",
" handForm = turtle.get_poly()\n",
"\n",
" turtle.register_shape(name, handForm)\n",
"\n",
" \n",
"\n",
"def Init():\n",
"\n",
" global secHand, minHand, hurHand, printer\n",
"\n",
" # 重置Turtle指向北\n",
"\n",
" turtle.mode(\"logo\")\n",
"\n",
" # 建立三个表针Turtle并初始化\n",
"\n",
" mkHand(\"secHand\", 135)\n",
"\n",
" mkHand(\"minHand\", 125)\n",
"\n",
" mkHand(\"hurHand\", 90)\n",
"\n",
" secHand = turtle.Turtle()\n",
"\n",
" secHand.shape(\"secHand\")\n",
"\n",
" minHand = turtle.Turtle()\n",
"\n",
" minHand.shape(\"minHand\")\n",
"\n",
" hurHand = turtle.Turtle()\n",
"\n",
" hurHand.shape(\"hurHand\")\n",
"\n",
" \n",
"\n",
" for hand in secHand, minHand, hurHand:\n",
"\n",
" hand.shapesize(1, 1, 3)\n",
"\n",
" hand.speed(0)\n",
"\n",
" \n",
"\n",
" # 建立输出文字Turtle\n",
"\n",
" printer = turtle.Turtle()\n",
"\n",
" # 隐藏画笔的turtle形状\n",
"\n",
" printer.hideturtle()\n",
"\n",
" printer.penup()\n",
"\n",
" \n",
"\n",
"def SetupClock(radius):\n",
"\n",
" # 建立表的外框\n",
"\n",
" turtle.reset()\n",
"\n",
" turtle.pensize(7)\n",
"\n",
" for i in range(60):\n",
"\n",
" Skip(radius)\n",
"\n",
" if i % 5 == 0:\n",
"\n",
" turtle.forward(20)\n",
"\n",
" Skip(-radius - 20)\n",
"\n",
" \n",
"\n",
" Skip(radius + 20)\n",
"\n",
" if i == 0:\n",
"\n",
" turtle.write(int(12), align=\"center\", font=(\"Courier\", 14, \"bold\"))\n",
"\n",
" elif i == 30:\n",
"\n",
" Skip(25)\n",
"\n",
" turtle.write(int(i/5), align=\"center\", font=(\"Courier\", 14, \"bold\"))\n",
"\n",
" Skip(-25)\n",
"\n",
" elif (i == 25 or i == 35):\n",
"\n",
" Skip(20)\n",
"\n",
" turtle.write(int(i/5), align=\"center\", font=(\"Courier\", 14, \"bold\"))\n",
"\n",
" Skip(-20)\n",
"\n",
" else:\n",
"\n",
" turtle.write(int(i/5), align=\"center\", font=(\"Courier\", 14, \"bold\"))\n",
"\n",
" Skip(-radius - 20)\n",
"\n",
" else:\n",
"\n",
" turtle.dot(5)\n",
"\n",
" Skip(-radius)\n",
"\n",
" turtle.right(6)\n",
"\n",
" \n",
"\n",
"def Week(t): \n",
"\n",
" week = [\"星期一\", \"星期二\", \"星期三\",\n",
"\n",
" \"星期四\", \"星期五\", \"星期六\", \"星期日\"]\n",
"\n",
" return week[t.weekday()]\n",
"\n",
" \n",
"\n",
"def Date(t):\n",
"\n",
" y = t.year\n",
"\n",
" m = t.month\n",
"\n",
" d = t.day\n",
"\n",
" return \"%s %d%d\" % (y, m, d)\n",
"\n",
" \n",
"\n",
"def Tick():\n",
"\n",
" # 绘制表针的动态显示\n",
"\n",
" t = datetime.today()\n",
"\n",
" second = t.second + t.microsecond * 0.000001\n",
"\n",
" minute = t.minute + second / 60.0\n",
"\n",
" hour = t.hour + minute / 60.0\n",
"\n",
" secHand.setheading(6 * second)\n",
"\n",
" minHand.setheading(6 * minute)\n",
"\n",
" hurHand.setheading(30 * hour)\n",
"\n",
" \n",
"\n",
" turtle.tracer(False)\n",
"\n",
" printer.forward(65)\n",
"\n",
" printer.write(Week(t), align=\"center\",\n",
"\n",
" font=(\"Courier\", 14, \"bold\"))\n",
"\n",
" printer.back(130)\n",
"\n",
" printer.write(Date(t), align=\"center\",\n",
"\n",
" font=(\"Courier\", 14, \"bold\"))\n",
"\n",
" printer.home()\n",
"\n",
" turtle.tracer(True)\n",
"\n",
" \n",
"\n",
" # 100ms后继续调用tick\n",
"\n",
" turtle.ontimer(Tick, 100)\n",
"\n",
" \n",
"\n",
"def main():\n",
"\n",
" # 打开/关闭龟动画,并为更新图纸设置延迟。\n",
"\n",
" turtle.tracer(False)\n",
"\n",
" Init()\n",
"\n",
" SetupClock(160)\n",
"\n",
" turtle.tracer(True)\n",
"\n",
" Tick()\n",
"\n",
" turtle.mainloop()\n",
"\n",
" \n",
"\n",
"if __name__ == \"__main__\":\n",
"\n",
" main()"
]
},
{
"cell_type": "markdown",
"id": "4aaf721c",
"metadata": {},
"source": [
"### 爱心的绘制"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "e44784b7",
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"color('red', 'pink') # 画笔色red,背景色pink\n",
"begin_fill()\n",
"left(135) # 左转135°\n",
"fd(100) # 前进100像素\n",
"right(180) # 画笔掉头\n",
"\n",
"circle(30, -180)\n",
"\n",
"backward(35) # 由于此时画笔方向约为绝对方向的135°,需倒退画线\n",
"right(90)\n",
"forward(35)\n",
"circle(-30, 180)\n",
"fd(100)\n",
"end_fill()\n",
"hideturtle()\n",
"done()"
]
},
{
"cell_type": "markdown",
"id": "bd6e4310",
"metadata": {},
"source": [
"### 玫瑰花的绘制"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "d67dd625",
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"import time\n",
"\n",
"setup(800,600,0,0)\n",
"speed(0)\n",
"penup()\n",
"seth(90)\n",
"fd(340)\n",
"seth(0)\n",
"pendown()\n",
"\n",
"speed(5)\n",
"begin_fill()\n",
"fillcolor('red')\n",
"circle(50,30)\n",
"\n",
"for i in range(10):\n",
" fd(1)\n",
" left(10)\n",
"\n",
"circle(40,40)\n",
"\n",
"for i in range(6):\n",
" fd(1)\n",
" left(3)\n",
"\n",
"circle(80,40)\n",
"\n",
"for i in range(20):\n",
" fd(0.5)\n",
" left(5)\n",
"\n",
"circle(80,45)\n",
"\n",
"for i in range(10):\n",
" fd(2)\n",
" left(1)\n",
"\n",
"circle(80,25)\n",
"\n",
"for i in range(20):\n",
" fd(1)\n",
" left(4)\n",
"\n",
"circle(50,50)\n",
"\n",
"time.sleep(0.1)\n",
"\n",
"circle(120,55)\n",
"\n",
"speed(0)\n",
"\n",
"seth(-90)\n",
"fd(70)\n",
"\n",
"right(150)\n",
"fd(20)\n",
"\n",
"left(140)\n",
"circle(140,90)\n",
"\n",
"left(30)\n",
"circle(160,100)\n",
"\n",
"left(130)\n",
"fd(25)\n",
"\n",
"penup()\n",
"right(150)\n",
"circle(40,80)\n",
"pendown()\n",
"\n",
"left(115)\n",
"fd(60)\n",
"\n",
"penup()\n",
"left(180)\n",
"fd(60)\n",
"pendown()\n",
"\n",
"end_fill()\n",
"\n",
"right(120)\n",
"circle(-50,50)\n",
"circle(-20,90)\n",
"\n",
"speed(1)\n",
"fd(75)\n",
"\n",
"speed(0)\n",
"circle(90,110)\n",
"\n",
"penup()\n",
"left(162)\n",
"fd(185)\n",
"left(170)\n",
"pendown()\n",
"circle(200,10)\n",
"circle(100,40)\n",
"circle(-52,115)\n",
"left(20)\n",
"circle(100,20)\n",
"circle(300,20)\n",
"speed(1)\n",
"fd(250)\n",
"\n",
"penup()\n",
"speed(0)\n",
"left(180)\n",
"fd(250)\n",
"circle(-300,7)\n",
"right(80)\n",
"circle(200,5)\n",
"pendown()\n",
"\n",
"left(60)\n",
"begin_fill()\n",
"fillcolor('green')\n",
"circle(-80,100)\n",
"right(90)\n",
"fd(10)\n",
"left(20)\n",
"circle(-63,127)\n",
"end_fill()\n",
"\n",
"penup()\n",
"left(50)\n",
"fd(20)\n",
"left(180)\n",
"\n",
"pendown()\n",
"circle(200,25)\n",
"\n",
"penup()\n",
"right(150)\n",
"\n",
"fd(180)\n",
"\n",
"right(40)\n",
"pendown()\n",
"begin_fill()\n",
"fillcolor('green')\n",
"circle(-100,80)\n",
"right(150)\n",
"fd(10)\n",
"left(60)\n",
"circle(-80,98)\n",
"end_fill()\n",
"\n",
"penup()\n",
"left(60)\n",
"fd(13)\n",
"left(180)\n",
"\n",
"pendown()\n",
"speed(1)\n",
"circle(-200,23)\n",
"\n",
"\n",
"\n",
"exitonclick()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "15b6f097",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}