turtle库,与,繁星满空

本文介绍了如何使用Python的turtle库和random库来创建一个随机星空的程序。首先,通过turtle库设置画布,然后利用random库生成星星的位置、颜色和大小。程序通过输入星星数量,随机生成坐标,并用不同比例的RGB颜色值绘制不同大小的星星,实现了一幅动态的星空画面。
摘要由CSDN通过智能技术生成

目录

壹:问题回溯

贰:思路分析

叁:代码实现

肆:对代码的分析

伍写在最后的话


壹:问题回溯

“咳咳咳,同学们,这周的作业是——画一幅夜空的图画。

“要求是……”

  1. 画很多星星。
  2. 星星位置随机。
  3. 星星颜色随机。
  4. 星星大小随机。

“下周末晚上12:00前记得在学习通提交作业。”

“下课。”


贰:思路分析

“画一幅夜空的图画”,那么,我们需要先有一张画布(即“turtle库”);分析要求,我们不难看出,要求横竖写着“随机”两个大字,自然,我们联想到了“random库”。

现在我们已经大概知道要用哪些函数库了,那么,下一步呢?もちろん,寻找题目中四个要求的逻辑。

画很多星星……吗?这个“很多”怎么界定?“10”为很多?还是“100”为很多?哎呀,不想了,设星星个数为未知数N吧【N = eval(input('要画多少个星星呢?'))】

星星位置随机?这样啊。えと,随机生成坐标(x,y),然后在这个位置画星星就行了。“嗯?坐标(x,y)吗?画布上有一个看不见的坐标轴呀,不是吗?”

“星星颜色随机”&“星星大小随机”,这两个要求可以整合到画星星这一过程中。至于理解方式的话……你拼过高达吗?就像拼高达一样。

def Star(length,color):

星星颜色要不同,Emm……我们一个一个地把颜色列出来,然后放在一个list列表里吗?嘛,也不是不行。“但,你不觉得手指酸吗?很麻烦呐,而且,如果我们要画100个星星的话,我们可不太能列出那么多的颜色啊。别的办法……RGB,of course!”

RGB is short for "Red, Green, Blue".

红绿蓝是光学三原色,我们通过三者不同比例的调配,得到其他数以万计的颜色。代码实现的话,用“random库”随机生成三个(0,1)之间的数构成比例,然后,就实现了。

对于“length”,读者下来理解一下吧。


叁:代码实现

# -*- coding: utf-8 -*-

# Created by Yuriko, all rights reserved.

#%%
# 调用函数库。

import turtle as t

import random as r

#%%
# 定义画星星的函数。

def Star(length,color):
    
    t.begin_fill()
    
    for x in range(5):
        
        t.color(color)
        
        t.forward(length)
        
        t.right(144)
    
    t.end_fill()
    
#%%
# 准备。

t.setup(1200,700) # 画布的宽、高。

t.speed('fastest')

#%%
# 代码主体部分。

N = eval(input('要画多少个星星呢?'))

for n in range(N):
    
    x = r.randint(-600,600); y = r.randint(-350,350)
    
    t.penup()
    
    t.goto(x,y)
    
    t.pendown()
    
    length = r.randint(20,30)
    
    color = (r.random(),r.random(),r.random())
    
    Star(length,color)
    
t.hideturtle()

t.done()    

#%%
# To be continued.

肆:对代码的分析

调用库 → 定义函数 → 根据要求调用函数

“挺清楚的,代码的三个部分。老实说,脚本里并没有出现特别复杂的知识点啊,很绕的那种逻辑结构啊。所以,就不展开分析了。”


伍:写在最后的话

“举一隅而不以三隅反,则不复也。”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuriko~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值