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 i 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()
运行结果:

task3_1
源代码:
from turtle import *
def square(size = 50, rgb = 'orange'):
'''绘制正方形
: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)
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 #改
count = 50
for i in range(count):
fd(size)
angle += 360/n #改
seth(angle)
size += 5
hideturtle()
done()
运行结果:

task5_1
源代码:
from turtle import *
def start(x,y):
penup()
goto(x,y)
pendown()
def main(c,n,l):
color(c)
begin_fill()
for i in range(n):
fd(l)
left(360/n)
end_fill()
start(-100,-100)
main('black',4,200)
start(-100,0)
right(45)
main('red',4,100*2**(1/2))
hideturtle()
done()
运行结果:

task5_2
源代码:
from turtle import *
color('blue')
pensize(2)
r = 20
for i in range(5):
r += 20
forward(r)
left(90)
circle(r,90)
left(90)
forward(r)
left(90)
forward(40)
goto(0,0)
hideturtle()
done()
运行结果:

task6
源代码:
from turtle import *
def moveto(x,y):
penup()
goto(x,y)
pendown()
bgcolor('black')
moveto(200,-200)
color('yellow')
begin_fill()
left(135)
fd(200)
right(90)
fd(200)
left(90)
circle(200,270)
end_fill()
moveto(80,70)
dot(40,'black')
moveto(72,76)
dot(10,'white')
hideturtle()
done()
运行结果:
