如何使用随机选择颜色

jma*_*453 23 python random colors

我正在尝试编写一些小程序以了解更多信息,但是在使用随机数时会陷入困境。

这是我要从https://trinket.io/Python/3338c95430开始的示例

我已经尝试过将random.randrange,random.choice,random.random用于所有内容,并且会发送错误代码,说明random不具有randrange,choice或random的功能。

import turtle, math, random, time

wn = turtle.Screen()
wn.bgcolor('grey')
Rocket = turtle.Turtle()
Rocket.speed(0)
Rocket.color('red') ## this is what i want to randomize
rotate=int(90)

def drawCircles(t,size):
    for i in range(15):
        t.circle(size)
        size=size-10
def drawSpecial(t,size,repeat):
    for i in range(repeat):
        drawCircles(t,size)
        t.right(360/repeat)
drawSpecial(Rocket,100,10)
Run Code Online (Sandbox Code Playgroud)

最终,我想实现更多的随机过程,例如大小和位置,但是现在我只关注颜色。

l'L*_*L'l 17

不使用其他导入,这非常简单:

turtle.colormode(255) # sets the color mode to RGB

R = random.randrange(0, 256, 100) # last value optional (step) 
B = random.randrange(0, 256)
G = random.randrange(0, 256)

# using step allows more control if needed
# for example the value of `100` would return `0`, `100` or `200` only

Rocket.color(R, G, B) ## randomized from values above
Run Code Online (Sandbox Code Playgroud)

使用的随机值(20025523):

在此处输入图片说明

编辑:关于“我只是将下一个的turtle.colormode()更改为Rocket.colormode()吗?”

我建议这样做的方法是创建一个函数:

def drawColor():

    turtle.colormode(255)

    R = random.randrange(0, 256)
    B = random.randrange(0, 256)
    G = random.randrange(0, 256)

    return R, G, B

Rocket.color(drawColor())
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以drawColor()随时调用新颜色。

现在,您已经具备了为图形随机化颜色的基本知识,您可以通过一些令人敬畏的外观结果(根据自己的喜好调整整数)的值来变得很有创意:

在此处输入图片说明

#!/usr/bin/python

import turtle, math, random, time

def drawColor(a, b, o):
    turtle.colormode(255)
    R = random.randrange(a, b, o) # last value is step (optional)
    B = random.randrange(a, b, o)
    G = random.randrange(a, b, o)
    # print(R, G, B)
    return R, G, B

def drawRocket(offset):
    Rocket = turtle.Turtle()
    Rocket.speed(0)
    Rocket.color(drawColor(20, 100, 1)) # start (0-256), end (0-256), offset 
    rotate=int(random.randrange(90))
    drawSpecial(Rocket,random.randrange(0, 10), offset)

def drawCircles(t,size):
    for i in range(30):
        t.circle(size)
        size = size - 20

def drawSpecial(t,size,repeat):
    for i in range(repeat):
        drawCircles(t,size)
        t.right(360/repeat)

def drawMain(x, y):
    wn = turtle.Screen()
    wn.bgcolor(drawColor(0, 20, 2))

    for i in range(3): # iterations
        drawRocket(x)
        x+=y
        # print(x)

drawMain(2, 10) # offset, step
input("Press ENTER to exit")
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢,老实说,我在网上进行大量搜索后找不到任何有关我的问题的信息,因此期望得到的帮助不多。我真的很高兴能够了解所有这些知识并做出自己的东西,但是到目前为止,这是一个非常有趣的学习经历! (3认同)