Python海龟画图


声明:大部分题目都是从廖老师那里搬运来的,本人就是整理下方便大家学习,感谢廖老师的辛苦付出

海龟画图

基础知识

turtle模块

首先要引入海龟模块,才可以使用turtle中的所有方法

import turtle

我个人是习惯取个别名的,调用起来方便

import turtle as t

常用方法

方法 简写 说明
turtle.setup(width,height) 设置屏幕宽高
turtle.done() 绘制完成,保留绘图窗口打开
turtle.forward(distance) turtle.fd() 向当前画笔方向移动distance像素长度
turtle.backward(distance) turtle.bk() 向当前画笔相反方向移动distance像素长度
turtle.right(degree) turtle.rt() 顺时针移动degree°
turtle.left(degree) turtle.lt() 逆时针移动degree°
turtle.pendown() turtle.pd() 画笔放下
turtle.penup() turtle.pu() 画笔提起
turtle.goto(x,y) 将画笔移动到坐标为x,y的位置
turtle.circle(radius,extent,steps) 画圆,radius:半径为正(负),表示圆心在画笔的左边(右边)画圆,extent:弧度一圈360,steps:多边形边数
turtle.pensize() 设置画笔的宽度
turtle.pencolor() 设置画笔颜色
turtle.speed() 设置画笔速度,1 - 10逐渐变快,0是最快的
turtle.color(color1, color2) 设置边框颜色和填充颜色
turtle.bgcolor() 设置画布的背景颜色
turtle.begin_fill() 开始填充
turtle.end_fill() 结束填充
turtle.colormode(255) 切换为RGB颜色模式
turtle.color(red,green,blue) 使用RGB颜色模式设置颜色
turtle.home() 设置当前画笔位置为原点,朝向东
turtle.dot(直径, color) 画点,color可不填,默认为画笔颜色
turtle.hideturtle() 隐藏海龟

随机模块

import random # 引入随机模块

# 常用
random.randint(a,b)	#返回a,b之间的整数,范围[a,b],注意:传入参数必须是整数,a一定要比b小。
random.choice(sequence)	#从sequence(序列,列表、元组和字符串)中随机获取一个元素。

# 了解
random.random()	       #用于生成一个0到1的随机浮点数: 0 <= n < 1.0
random.randrange([start=0], stop[, step=1])	#返回前闭后开区间[start,stop)内的整数,可以设置step。只能传入整数。

案例学习

正方形

案例:画一个边长100的正方形

import turtle as t

t.setup(400,400)
for i in range(4):
    t.fd(100)
    t.left(90)

t.done()

任务:绘制10个边长为100的正方形(每画一个正方形向左旋转10°)

画笔颜色、粗细、速度

案列:绘制正方形,边长100,线条粗5,绿色

import turtle as t
t.pensize(5)
t.pencolor("blue")
for i in range(4):
    t.fd(100)
    t.lt(90)
t.done()

任务:绘制长方形:长200宽100,红色,线条粗3,绘制速度10

画笔移动、抬起、放下

案例:绘制一排正方形,每个正方形的边长为50,线条粗细为5,颜色为红色,各个正文形间隔距离为10,最左侧正方形右下角的坐标为(0,0)

import turtle as t
t.pensize(5)
t.pencolor('red')
for i in range(0,5):
      t.up()
      t.goto(60*i,0)
      t.down()
      for j in range(4):
            t.fd(50)
            t.lt(90)
t.done()

任务:绘制一列正方形(就是刚才是横着画了一排正方形,现在请你竖着画一列正方形)

五彩正方形

案例:绘制一排正方形,五个正方形的线条颜色依次显示为红色、绿色、蓝色、紫色、黄色。(red、green、blue、purple、yellow)

import turtle as t
t.pensize(5)
lst=["red","green","blue","purple","yellow"]
for i in range(0,5):
      t.up()
      t.goto(60*i,0)
      t.down()
      t.pencolor(lst[i])
      for j in range(4):
            t.fd(50)
            t.lt(90)
t.done()

任务:每个正方形的线条颜色随机产生

填充

案例:填充色的长方形:长200宽100,红色,线条粗3,填充蓝色

import turtle as t

t.setup(800,800)
t.pensize(3)
t.color('red','blue')

t.begin_fill()
for i in range(1, 5):
    if i%2==1:
        t.fd(200)
    else:
        t.fd(100)
    t.right(90)
t.end_fill()

t.done()

任务.画一个边长200正方形,线条蓝色,一半填充红色,一半填充绿色

案例:绘制两个圆,圆的半径为100,窗体大小(600,600)

import turtle as t
t.setup(600,600)
t.lt(90)
t.circle(-100) #画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
t.circle(100)
t.done()

任务:将上述两个图形分别填充为红色和绿色两种颜色

案例:绘制一个设计靶

import turtle as t

t.setup(600,600)
t.speed(0)

t.dot(400,'yellow')
t.dot(300,'green')
t.dot(200,'blue')
t.dot(100,'red')

t.done()

任务:绘制一朵太阳花,红色花瓣由四个圆形图案组合而成,圆的半径为100,中间花心部分有一个半径为50的,黄色小圆构成

随机颜色圆环(不同心)

import turtle as t
import random

t.setup(600,600)
t.speed(0)
t.pensize(10)
t.colormode(255)

for i in range(10,200,10):
    red = random.randint(0,255)
    green = random.randint(0,255)
    blue = random.randint(0,255)
    t.color(red,green,blue)
    t.circle(i)

t.done()

任务:绘制随机颜色圆环(同心)

发散线条

import turtle as t
import random

t.setup(800,800)
t.pensize(5)
t.speed(0)

for i in range(36):
    t.fd(100)
    t.goto(0,0)
    t.lt(10)

t.done()

任务:绘制随机长度,随机方向、随机颜色的发散线条

绘制十字架

import turtle as t

for i in range(4):
    for i in range(3):
        t.fd(50)
        t.right(90)
    t.left(180)

t.done()

任务:绘制红十字架

绘制奥运五环图

要求:圆的半径为100,颜色分别为:蓝、黑、红、黄、绿。每个圆环交叉点在圆弧中间位置。【’blue’,’black’,’red’,’yellow’,’green’】

import turtle as t

t.setup(800,800)
t.speed(0)
t.pensize(10)

def draw_circle(color,x,y):
    t.penup()
    t.goto(x,y)
    t.pendown()
    t.color(color)
    t.circle(100)

draw_circle('black',0,0)
draw_circle('red',200,0)
draw_circle('blue',-200,0)
draw_circle('green',100,-100)
draw_circle('yellow',-100,-100)

t.done()

画风车

import turtle as t

color_list = ['red','yellow','blue','green']
#               0      1        2      3

t.setup(600,600)

for i in range(4):
    t.color('black',color_list[i])
    t.begin_fill()
    t.fd(200)
    t.lt(90)
    t.circle(100,180)
    t.end_fill()
t.done()

画四色圆

import turtle as t

color_list = ['red','yellow','blue','green']
#               0      1        2      3

t.setup(600,600)

for i in range(4):
    t.color('black',color_list[i])
    t.begin_fill()
    t.fd(100)
    t.lt(90)
    t.circle(100,90)
    t.end_fill()
    t.goto(0,0)
    t.rt(90)

t.done()

画奔驰车标

import turtle as t

t.pensize(5)
t.color('red')

t.circle(100)

t.left(90)
for i in range(3):
    t.penup()
    t.goto(0,100)
    t.pendown()
    t.fd(100)
    t.lt(120)

t.done()

同心六边形

import turtle as t

for i in range(10,200,10):
    t.circle(i,360,6)
    t.penup()
    t.goto(0,-i)
    t.pendown()

t.done()

圆锥

import turtle as t
import random

t.speed(0)
t.colormode(255)

for i in range(100,-3,-3):
    t.fillcolor(100+i,100-i,0)
    # t.fillcolor(random.randint(0,255),random.randint(0,255),random.randint(0,255))
    # 移动位置
    t.penup()
    t.goto(-i,0)
    t.pendown()
    # 画圆
    t.begin_fill()
    t.circle(i,360)
    t.end_fill()

t.done()

扇子

import turtle as t
t.speed(0)
t.pensize(5)

t.fillcolor('yellow')
t.begin_fill()
t.fd(250)
t.lt(90)
t.circle(250,120)
t.home()
t.end_fill()

for i in range(11):
    t.color('red')
    t.goto(0,0)
    t.lt(10)
    t.fd(250)

t.done()

太极

import turtle as t

t.pensize(5)
t.speed(0)
t.penup()
t.goto(0,-200)
t.pendown()

t.fillcolor('black')
t.begin_fill()
t.circle(200,180)
t.circle(100,180)
t.circle(-100,180)
t.end_fill()

t.circle(-200,180)

t.penup()
t.goto(0,-100)
t.pendown()
t.dot(100)

t.penup()
t.goto(0,100)
t.pendown()
t.dot(100,'white')

t.done()

六芒星

import turtle as t

t.bgcolor('gray') # 设置背景颜色为灰色
t.pensize(5)      # 设置笔的宽度

# 将笔抬起来之后再移动到-100,100这个点再放下
t.penup()         
t.goto(-100,100)
t.pendown()

for i in range(8):
    t.fd(150)      # 往前移动150
    t.lt(225)      # 向左转225度

t.done()

棋盘格

利用Python中自带Turtle库绘制如下黑白棋盘。要求:画布大小宽800高600,窗体显示500500,初始位置在(300,300),画出如下1010的黑白格子,每个格子大小为50*50

import turtle as t
t.screensize(800,600,'white') # 设置画布宽、高、背景颜色
t.speed(0) # 设置海龟的速度,0是最快

# 让海龟去x,y坐标点
def goto(x,y):
    t.penup()
    t.goto(x,y)
    t.pendown()

# 画一个正方形
def draw_zhengfang(color):
    t.color('black',color)
    t.begin_fill()
    for i in range(4):
        t.fd(50)
        t.lt(90)
    t.end_fill()

goto(250,-250)
count = 0
for i in range(-250,250,50):
    for j in range(250,-250,-50):
        goto(i,j)
        if count%2==1:
            draw_zhengfang('white')
        else:
            draw_zhengfang('black')
        count += 1
    count+=1

t.done()

满天星

import turtle as t
import random

t.screensize(800,800)
t.bgcolor('black')
t.speed(0)
t.colormode(255)
for i in range(100):
    t.penup()
    t.goto(random.randint(-400,400),random.randint(-400,400))
    t.pendown()
    #画一个随机颜色的五角星
    random_color = [random.randint(0,255),random.randint(0,255),random.randint(0,255)]
    t.pencolor(random_color)
    t.fillcolor(random_color)
    t.begin_fill()
    for i in range(5):
        t.fd(20)
        t.rt(144)
    t.end_fill()

t.done()

文章作者: 打工码农
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 打工码农 !
  目录