turtle基础图形绘制2-同心圆套娃正方形蟒蛇连体五角星

1.同心圆
circle函数

import turtle
turtle.pensize(2)
turtle.circle(10)
turtle.circle(40)
turtle.circle(80)

2.套娃正方形

import turtle as t
def square(sizes):
    for side in [1,2,3,4]:
        t.pensize(5)
        t.fd(sizes)
        t.right(90)
    t.left(90)
def penn(sizes):
    t.penup()
    t.left(90)
    t.fd(sizes)
    t.right(90)
    t.fd(sizes)
    t.right(90)
    t.pendown()
def main():
    for sizes in [10,30,90,270]:
        square(sizes)
        penn(sizes)
main()

em自创的有待完善
对于边长的那个函数有点尴尬)

3.蟒蛇

import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
    turtle.circle(40,80)
    turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)
turtle.done()

4.连体五角星(斐波那契数列没想到)
首先,我理解的斐波那契

def f(n):
    if n==1 or n==2:
        return 1
    else :
        return f(n-1)+f(n-2)

我的五角星

import turtle as t
def F(n):
    if n <=2:
        return 1
    else:
        return F(n-1)+F(n-2)
def star(sizes,pcolor,fcolor,sangle=0):
    
    t.color(pcolor,fcolor)
    t.left(sangle)
    t.begin_fill()
    for i in range(5):
        t.pensize(1)
        t.fd(sizes)
        t.left(144)
        t.speed("fastest")
    t.end_fill()
colors = ['blue','skyblue','yellow','pink','red']
star(F(n=8),\
         colors[0],\
         colors[0],72)
star(F(n=9),\
         colors[1],\
         colors[1],72)
star(F(n=10),\
         colors[2],\
         colors[2],72)
star(F(n=11),\
         colors[3],\
         colors[3],72)
star(F(n=12),\
         colors[4],\
         colors[4],72)
t.done()    

注意
1.绘制五角星时,若t.left(144),则角向下
若t.right(144),则角向上
2.定义函数注意变量的使用
3.有一点问题有待改正

以下几个用于比较填色的版本
类型一:黑色边框无填充

import turtle as t
t.setup(width=0.5,height=0.8)
t.speed(50)
t.pensize(6)
def star(边长):
    for i in range(5):
        t.write(i)
        t.fd(边长)
        t.left(144)
def main():
    colors=["blue","cyan","yellow","pink","red"]
    边长 = 200
    for i in range(5):
        star(边长)
        t.left(72)
main()

类型二:彩色边框黑色填充

import turtle as t
t.setup(width=0.5,height=0.8)
t.pensize(6)
def star(sizes):
    for i in range(5):
        t.write(i)
        t.fd(sizes)
        t.left(144)
def main():
    sizes=200
    t.begin_fill()
    for i in range(5):
        colors=["blue","cyan","yellow","pink","red"]
        t.pencolor(colors[i])
        star(sizes)
        t.left(72)
    t.end_fill()
main()

类型三:彩色边框红色填充

import turtle as t
t.setup(width=0.5,height=0.8)
t.speed(50)
t.pensize(6)
def star(边长,颜色="black"):
    #t.color(颜色,颜色)
    #t.begin_fill()
    for i in range(5):
        t.write(i)
        t.fd(边长)
        t.left(144)
    #t.end_fill()
def main():
    colors=["blue","cyan","yellow","pink","red"]
    边长 = 200
    t.begin_fill()
    for i in range(5):
        t.color(colors[i],colors[i])
        star(边长)
        t.left(72)
    t.end_fill()
 main()

类型二:等大的正确填充

import turtle as t
t.setup(width=0.5,height=0.8)
t.pensize(6)
colors=["blue","cyan","yellow","pink","red"]
def star(边长,颜色="black"):
    #t.color(colors[i],colors[i])
    t.begin_fill()
    for i in range(5):
        t.write(i)
        t.fd(边长)
        t.left(144)
    t.end_fill()
def main():
    边长 = 200
    #t.begin_fill()
    for i in range(5):
        star(边长)
        t.color(colors[i],colors[i])
        t.left(72)
    #t.end_fill()
main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值