Python利用turtle库绘制花样螺旋正方形


前言

对于大部分学习Python的同学来说,利用turtle库绘制图像是必经的一个学习过程,本文介绍了Python的turtle库中部分函数在绘制螺旋正方形项目中的应用,简单却充满趣味,希望能勾起同学们的学习兴趣!


以下是本篇文章正文内容,下面案例可供参考

一、简单的螺旋正方形

从内向外画效果图:
在这里插入图片描述

代码:

#导入turtle库
from turtle import *  #用from ... import ... 导入库,后调用其函数只需写函数名

setup(500,500,1000,250)
seth(0)
for i in range(0, 400, 5):
    fd(i)
    left(90)
    fd(i)
    left(90)
hideturtle()  #隐藏画笔

注:(turtle.)setup(width=500, height=500, startx=1000, starty=250)
width为画布显示方框的宽,height为画布显示方框的长。画布显示方框以电脑屏幕左上角为原点,以右为x轴、以下为y轴,startx对应x轴长度,starty对应y轴长度,(startx, starty)为显示方框在屏幕对应坐标。

从外向内画效果图:
在这里插入图片描述
代码:

#导入turtle库
from turtle import *  #用from ... import ... 导入库,后调用其函数只需写函数名

setup(500,500,1000,250)
seth(0)
for i in range(400, 0, -5):
    fd(i)
    left(90)
    fd(i)
    left(90)
hideturtle()  #隐藏画笔

二者不同原因:range()函数的反向应用

二、花样螺旋正方形

1.绘制正方形

效果图:
在这里插入图片描述
代码:

import turtle as t
import math

def draw1(L):
    for i in range(4):
        t.penup()
        t.left(45)
        t.fd(L)
        t.pendown()
        t.left(135)
        t.fd(math.sqrt(2)*L)
        t.left(135)
        t.penup()
        t.fd(L)
        t.pendown()
        t.left(135)
draw1(100)

注:依次画四个等腰直角三角形即可构成正方形,只需用penup()和pendown()将三角形的腰隐藏起来即可

2.花样螺旋正方形

主代码:

def main():
	t.tracer(0)
	t.bgcolor('white')
	draw2(300, 2, 13)
	t.hideturtle()
	t.update()

main()

未上色效果图:
在这里插入图片描述

代码:

def draw2(L, length, N):   #L表示边长,length表示每次循环边长减小的长度,N表示旋转角度
    for i in range(L, 0, -length):
        t.seth(N)
        draw1(i)
        N += 13

上色效果图(1):
在这里插入图片描述

代码:

def draw2(L, length, N):   #L表示边长,length表示每次循环边长减小的长度,N表示旋转角度
    t.fillcolor('black')
    t.begin_fill()
    for i in range(L, 0, -length):
        t.pencolor('red')
        t.seth(N)
        draw1(i)
        N += 13
    t.end_fill()

上色效果图(2):
在这里插入图片描述

代码:

def draw2(L, length, N):   #L表示边长,length表示每次循环边长减小的长度,N表示旋转角度
    t.fillcolor('black')
    for i in range(L, 0, -length):
        t.pencolor('red')
        t.begin_fill()
        t.seth(N)
        draw1(i)
        N += 13
        t.end_fill()

上色效果图(3):
在这里插入图片描述

代码:

def draw2(L, length, N):   #L表示边长,length表示每次循环边长减小的长度,N表示旋转角度
    colors = ["blue","yellow","red","pink",'purple','orange','green','black'] #定义颜色(8种颜色)
    t.fillcolor('black')
    for i in range(L, 0, -length):
        t.pencolor(colors[i % 7])  #因为背景是黑色,就没用黑色
        t.begin_fill()
        t.seth(N)
        draw1(i)
        N += 13
        t.end_fill()

总结

善于从不同角度、不同方向、不同颜色去构想图形的样子,散发思维去尝试,在学习中娱乐,在娱乐中激发学习的乐趣,从而乐学不倦!


版权声明:本文为weixin_44879620原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。