实验六 turtle绘图与python库应用编程体验

发布时间 2023-06-10 19:19:19作者: 魅力哥

task1_1

实验源码:

from turtle import *
def move(x, y):
    '''画笔移动到坐标(x,y)处'''
    penup()
    goto(x, y)
    pendown()
def draw(n, size = 100):
    '''绘制边长为size的正n变形'''
    for i in range(n):
        fd(size)
        left(360/n)
def main():
    pensize(2)
    pencolor('red')
    move(-200, 0)
    draw(3)
    move(0, 0)
    draw(4)
    move(200, 0)
    draw(5)
    hideturtle()
    done()


main()

实验结果:

 task1_2

实验源码:

from turtle import *


def moveto(x, y):
    """把画笔移动至坐标(x, y)处"""
    penup()
    goto(x, y)
    pendown()


def main():
    pensize(2)
    pencolor('blue')
    moveto(-150, 0)
    circle(50)
    moveto(0, 0)
    circle(50, steps=4)
    moveto(150, 0)
    circle(50, steps=5)
    moveto(300, 0)
    circle(50, steps=6)
    hideturtle()
    done()


main()

实验结果:

 task2_1

实验源码:

"""以(0,0)为圆心,绘制9个同心圆"""
from turtle import *


def moveto(x, y):
    """把画笔移至坐标(x,y)处"""
    penup()
    goto(x, y)
    pendown()


def main():
    setup(800, 600)


radius = 20  # 圆初始半径
offset = 20  # 同心圆每次位移量
for i in range(9):
    moveto(0, -radius)
    circle(radius)
    radius += offset
hideturtle()
done()
main()

实验结果:

 task2_2

实验源码:

"""以(0, 0)为圆心,绘制9个彩色同心圆,色彩随机生成"""
from turtle import *
from random import random


def moveto(x, y):
    """把画笔移至坐标(x,y)处"""
    penup()
    goto(x, y)
    pendown()


def gen_color():
    """生成一个以rgb三元组表示的颜色值并返回"""
    return tuple((random() for _ in range(3)))


def main():
    setup(800, 600)
    radius = 180  # 圆初始半径
    offset = 20  # 同心圆每次位移量
    for i in range(8):
        moveto(0, -radius)
        color(gen_color())
        begin_fill()
        circle(radius)
        end_fill()
        radius -= offset
    hideturtle()
    done()


main()

实验结果:

 实验3_1

实验源码:

from turtle import *
def square(size = 50, rgb = 'pink'):
    """绘制正方形
    :para: size:int 指定边长 (如未指定参数,使用默认值)
    :para: c: str 指定画笔颜色值 (如未指定参数,使用默认值)
    """
    pencolor(rgb)
    for i in range(4):
        fd(size)
        left(90)
def main():
    setup(800, 600)
    speed(0)
    n=10
    for i in range(n):
        square(80,rgb = 'orange')
        left(360/n)
    hideturtle()
    done()
main()

实验结果:

 task3_2

实验源码:

from turtle import *
setup(800, 600)
pencolor('pink')
n=10
for i in range(n):
# 绘制一片花瓣
    for j in range(2):
        circle(80, 90)
        left(90)
    right(360/n)
hideturtle()
done()

实验结果:

 task4

实验结果:

from turtle import *
setup(800, 600)
bgcolor('black')
pencolor('white')
speed(0)

angle = 0
size = 2

n=5# 螺旋n边形
count = 50 # 循环次数

for i in range(count):
    fd(size)
    angle += 360/n
    seth(angle)
    size += 5


hideturtle()
done()

实验结果:

 task5_1

实验源码:

from turtle import *
square = Turtle()
square.color('black')
square.penup()
square.goto(-100,-100)

square.pendown()
square.begin_fill()
for _ in range(4):
    square.fd(200)
    square.left(90)
square.end_fill()


s2 = Turtle()
s2.color('red')
s2.penup()
s2.goto(0,-100)

s2.pendown()
s2.left(45)
s2.begin_fill()
for _ in range(4):
    s2.fd(100*(2**0.5))
    s2.left(90)
s2.end_fill()
done()

实验结果:

 task5_2

实验源码:

from turtle import *
sector = Turtle()
# 初始化绘图参数
sector.penup()
sector.goto(0, 0)
sector.color('blue')
sector.pensize(2)
sector.speed(0)
# 设置扇形数值
radius = 40
delta_d = 20
sector.pendown()
for _ in range(5):
    sector.fd(radius)
    sector.left(90)
    sector.circle(radius, extent=90)
    sector.seth(270)
    sector.fd(radius)
    sector.seth(0)

    radius += delta_d

done()

实验结果:

 task6

实验源码:

from turtle import *
from random import random
strip = Turtle()
setup(800, 600)
strip.speed(0)
# 获取颜色


def colors():
    return tuple(random() for _ in range(3))


strip.pendown()
for i in range(10):
    strip.color(colors())
    strip.begin_fill()
    for _ in range(2):
        strip.fd(20)
        strip.left(90)
        strip.fd(60)
        strip.left(90)
    strip.fd(20)
    strip.end_fill()

strip.penup()
strip.goto(0, 0)
strip.pendown()

for i in range(10):
    strip.color(colors())
    strip.begin_fill()
    strip.seth(180)
    for _ in range(2):
        strip.fd(20)
        strip.right(90)
        strip.fd(60)
        strip.right(90)
    strip.fd(20)
    strip.end_fill()
strip.hideturtle()
done()

实验结果:

 总结:学习了turtle模块的用法,还需继续练习。