Python turtle库入门小练习
来源:互联网 发布:淘宝店铺运营助手在哪 编辑:程序博客网 时间:2024/06/11 08:10
表 1:turtle 库的画笔绘制状态函数(共 3 个)
表 2:turtle 库的画笔运动的函数(共 13 个)
函数 描述forward() 沿着当前方向前进指定距离backward() 沿着当前相反方向后退指定距离right(angle) 向右旋转 angle 角度left(angle) 向左旋转 angle 角度goto(x,y) 移动到绝对坐标(x,y)处setx( ) 将当前 x 轴移动到指定位置sety( ) 将当前 y 轴移动到指定位置setheading(angle)设置当前朝向为 angle 角度home() 设置当前画笔位置为原点,朝向东。circle(step) 绘制一个指定半径,角度、以及绘制步骤 step 的dot(r,color) 绘制一个指定半径 r 和颜色 color 的圆点undo() 撤销画笔最后一步动作speed() 设置画笔的绘制速度,参数为 0-10 之间
表 3: turtle 库的控制画笔颜色和字体的函数(共 11 个)
函数 描述color() 设置画笔的颜色begin_fill() 填充图形前,调用该方法end_fill() 填充图形结束filling() 返回填充的状态,True 为填充,False 为未填充clear() 清空当前窗口,但不改变当前画笔的位置reset() 清空当前窗口,并重置位置等状态为默认值screensize() 设置画布的长和宽hideturtle() 隐藏画笔的 turtle 形状showturtle() 显示画笔的 turtle 形状isvisible() 如果 turtle 可见,则返回 Truewrite(str,font=None)输出 font 字体的字符串
1.绘制蟒蛇
# -*- coding: utf-8 -*-import turtledef drawSnake(rad,angle,len,neckrad): for i in range(len): turtle.circle(rad,angle)#rad画圆轨迹半径的长度 turtle.circle(-rad,angle)#angle沿着远行爬行的弧度值 turtle.circle(rad, 40) turtle.fd(rad)#向前爬行rad turtle.circle(neckrad+1,180) turtle.fd(rad*2/3)def main(): turtle.setup(1300,800,0,0)#长为1300,宽为800的窗口,(0,0)窗口左上角在屏幕中的位置 pythonsize=30#30px turtle.pensize(pythonsize)#轨迹宽度 turtle.pencolor("blue")#轨迹颜色 turtle.seth(-40)#出发角度 drawSnake(40,80,5,pythonsize/2) turtle.done()main()
2.绘制五角星
# -*- coding: utf-8 -*-from random import *from math import *from turtle import *def main(): p=Turtle() p.speed(3) p.pensize(5) p.pencolor("black") p.fillcolor("yellow") p.begin_fill() for i in range(5): p.forward(200) p.right(144) p.end_fill() done()main()
3.利用广度优先遍历思想画树
# -*- coding: utf-8 -*-from random import *from math import *from turtle import *def tree(plist,l,a,f): if l>2: nextlist=[] for p in plist: p.forward(l) q=p.clone() p.left(a) q.right(a) nextlist.append(p) nextlist.append(q) tree(nextlist,l*f,a,f)def main(): p=Turtle() p.color("green") p.speed(10) p.pensize(1) p.left(90) p.hideturtle()#隐藏箭头 p.penup()#抬笔 p.goto(-100,-100) p.pendown()#落笔 tree([p],90,60,0.65) done()main()
4.读取文件中的数据绘图
data.txt中:直行像素,左转(0)还是右转(1),转动的角度,颜色代码
300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0
# -*- coding: utf-8 -*-from math import *from turtle import *def main(): p=Turtle() p.shape("turtle")#乌龟形状 result=[] f=open("data.txt","r") for line in f: result.append(map(float,line.split(',')))#map表示将字符串类型的列表转化为float类型列表 for i in range(len(result)): p.color(result[i][3],result[i][4],result[i][5]) p.fd(result[i][0]) if result[i][1]==0: p.left(result[i][2]) else: p.right(result[i][2]) done()main()
5.创建钟表
# -*- coding: utf-8 -*-from turtle import *from datetime import *def Skip(step): penup() forward(step) pendown()#建立钟表的外框def setupClock(radius): reset() pensize(7) for i in range(60): Skip(radius) if i%5==0: forward(20) Skip(-radius-20) else: dot(5) Skip(-radius) right(6)#注册turtle形状,建立名字为name的形状def makeHand(name,length): reset() Skip(-0.1*length) # 开始记录多边形的顶点 begin_poly() forward(1.1*length) # 停止记录多边形的顶点,并与第一个顶点相连 end_poly() #返回最后记录的多边形 handForm=get_poly() #注册形状,命名为name register_shape(name,handForm)def init(): global secHand,minHand,hurHand,printer #重置turtle指针向北 mode("logo") secHand=Turtle() makeHand("secHand", 125) secHand.shape("secHand") minHand=Turtle() makeHand("minHand", 130) minHand.shape("minHand") hurHand=Turtle() makeHand("hurHand", 90) hurHand.shape("hurHand") #shapesize第一个参数没看到什么用,第二个参数表示几倍的长度,第3个参数表示3倍的宽度 #speed(0)是最快 for hand in secHand, minHand, hurHand: hand.shapesize(1,1,3) hand.speed(0) #建立并输出文字的turtle对象,printer对象只是显示文字不显示路径,所以一直是penup和hideturtle printer=Turtle() printer.hideturtle() printer.penup()def Week(t): week=["星期一","星期二","星期三","星期四","星期五","星期六","星期七"] return week[t.weekday()]def Day(t): return "%s %d %d" %(t.year,t.month,t.day)def Tick(): t=datetime.today() second=t.second+t.microsecond*0.000001 minute=t.minute+t.second/60.0 hour=t.hour+t.minute/60.0 secHand.setheading(second*6) minHand.setheading(minute*6) hurHand.setheading(hour*30) tracer(False) printer.fd(70) printer.write(Week(t),align="center",font=("Courier", 14, "bold")) printer.back(130) printer.write(Day(t),align="center",font=("Courier", 14, "bold")) printer.home() tracer(True) ontimer(Tick,100)#100ms后继续调用Tickdef main(): #关闭动画 tracer(False) init() setupClock(200) #开启动画 tracer(True) Tick() done()main()
阅读全文
0 0
- Python turtle库入门小练习
- python:小乌龟turtle
- Python标准库-turtle
- [python学习]Turtle库
- 【python】turtle库
- Python Turtle库详解
- python中turtle模块的练习
- 【Python学习】 之 Turtle库
- Python绘图Turtle库详解
- python turtle库常用方法
- Python绘图Turtle库详解
- Python绘图Turtle库详解
- 【Python学习】 之 Turtle库
- Python.turtle
- Python:利用turtle库绘制iPhone4草图
- 运用Python的turtle库绘制等边三角形
- 【16】python使用turtle库绘画
- python学习笔记-turtle类库实例
- 【机器学习】先验概率、后验概率、贝叶斯公式、 似然函数
- openjudge 特殊密码锁(开关问题)
- 分类器
- Anguar入门--开发环境的搭建
- azure 最佳实践-- 系统运维
- Python turtle库入门小练习
- python 试题:Python中pass语句的作用是什么?
- 旋转轮播图
- HTML5简介
- C# 中的委托和事件
- list.set.map 补充说明
- 用链表实现栈(Java版)
- Centos7.3 搭建LAMP环境
- 婚纱照选场地