python之turtle海龟画雪花

最近学习了海龟画图科赫雪花,总感觉不是很像,在广东上班很多年没见过雪花了,于是百度一下,图片如下雪花
在这里插入图片描述
一般都是有6个分支,也有极少数为5个分支,每个分支都是一样的,因此可以定义一个分支的函数

import turtle as t
def fork(l):  #定义分支的左右叉函数
    t.pendown()
    t.left(60)
    t.fd(l)
    t.penup()
    t.fd(-l)
    t.pendown()
    t.right(120)
    t.fd(l)
    t.penup()
    t.fd(-l)
    t.left(60)
    t.pendown()

 def branch(l,n):  定义雪花分支函数
   # t.pencolor(random.random(), random.random(), random.random())
    t.fd(l)
    k = [l/n/3, l/n,  3*l/2/n, 2*l/n, 3*l/2/n,  2*l/n/3, l/n/3, 2*l/n/3, l/n/3]
    for i in range (n-1):
        if i == 3 and n >= 7:  #当分支的左右叉数量多于7的时候在第四个叉上再增加分支,更接近于图2
            t.fd(-l / n)
            t.left(60)
            branch(3*l/n, 3)
            t.right(120)
            branch(3 * l / n, 3)
            t.left(60)
        else:
            t.penup()
            t.fd(-l/n)
            fork(k[i])
    t.fd(-l/n)

这里我用了两个参数,分别代表雪花的半径和分支的数量
分支写好了再来个for循环生成雪花了

def snow(l,m,n):
    for i in range(m):
        t.right(360/m)
        branch(l,n)

运行结果如下,自我感觉还不错,有那么点雪花的意思了
snow(100, 6, 8)
snow(100, 6, 6)
snow(100, 5, 9)
不知道有没有这种雪花

然后小朋友说我想要好多雪花,而且要不一样的随机出现,想一下如何结合random函数实现呢
其实只要snow()函数的3个参数随机就好啦,但要注意合理范围,于是我又有了这个

import random
def random_snow():
    l = random.randint(10,100)
    m = random.randint(5,6)
    n = random.randint(6,9)
    snow(l, m, n)

主函数带个雪花数量参数

def main(j):
    t.setup(800,600)
    t.speed(0)
    for i in range(j):
        xy()
        random_snow()
    t.done()

最后直接获取用户输入数量

main(eval(input("请输入需要生成雪花的数量:")))

来个5片雪花的
在这里插入图片描述
再来个多点的20片吧
在这里插入图片描述
叠在了一起太乱了,来点颜色吧,生活就要五彩斑斓,尽管雪花不是彩色的
10片彩色雪花
在这里插入图片描述
雪花一片一片飘啊飘

  • 24
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值