亲宝软件园·资讯

展开

Python绘制随机彩色蟒蛇方法浅析

破壁人x 人气:0

今天老师提出了一个问题就是用turtle库绘制随机颜色的蟒蛇 并且每段的颜色都是不一样的 所以我写了这段代码 这段代码的思路是把不同颜色通过字典的方式存起来 通过随机数库就可以随机生成对应的key来调用这些颜色从而实现随机颜色的效果

import turtle
import random#导入随机数模块实现随机颜色的功能
#把不同颜色用字典的方式储存 key为1到6的整数
colors = {1:'blue',2:'yellow',3:'red',4:'purple',5:'black',6:'green'}
turtle.setup(650,350,200,200)
turtle.pu()
turtle.fd(-250)
turtle.pendown()
turtle.width(25)
turtle.seth(-40)
for i in range(4):
    a = random.randrange(1,7)#获取随机数并赋值给a
    turtle.pencolor(colors[a])#通过索引的方式选择颜色(颜色是随机的)
    turtle.circle(40,80)
    a = random.randrange(1,7)#获取随机数并赋值给a
    turtle.pencolor(colors[a])#通过索引的方式选择颜色(颜色是随机的)
    turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)
turtle.done()

这个是运行结果

不过这样子把一个一个颜色存进去太过麻烦 而且颜色太少了只局限于黑,绿 蓝,红,黄这几种颜色 没有达到随机颜色的目的 所以我加以改进 代码如下

import turtle
import random  # 导入随机数模块实现随机颜色的功能
turtle.colormode(255)  # 把颜色表示法取值的模式从[0-1]之间改成[0-255]
#定义一个生成颜色的模块
def colorchoose():
    a, b, c = random.randrange(0, 256), random.randrange(0, 256), random.randrange(0, 256)
    color = (a, b, c)
    return color   #返回值是一个rgb颜色
turtle.setup(650, 350, 200, 200) 
turtle.pu()
turtle.fd(-250)
turtle.pendown()
turtle.width(25)
turtle.seth(-40)
for i in range(4):
    turtle.pencolor(colorchoose())  # 调用模块 随机生成rgb颜色
    turtle.circle(40, 80)
    turtle.pencolor(colorchoose())  # 调用模块 随机生成rgb颜色
    turtle.circle(-40, 80)
turtle.circle(40, 80 / 2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2 / 3)
turtle.done()

这段代码里的颜色变换直接取决于rgb颜色的三个参数 所以我让他们变为随机的 范围定在0-255(注:python里的rgb颜色参数模式默认是0-1 用turtle的话需要用turtle.colormode(255) 语句把模式转换成0-255否则会报错) 定义了一个模块的原因是因为不停通过赋值的方式改变rgb的三个参数是在太麻烦 所以通过调用具有生成随机颜色功能的模块的方式更加省力 以下是运行结果

看,随机颜色的功能是不是实现了?

加载全部内容

相关教程
猜你喜欢
用户评论