Python 如何使用随机选择颜色

Python 如何使用随机选择颜色,python,random,colors,Python,Random,Colors,我正在尝试制作一个小程序来了解更多信息,但在使用random时,我被卡住了 这是一个我要做的事情的例子 我试过使用random.randrange,random.choice,random.random为他们提供一切,它会发送一个错误代码,说random没有randrange,choice或random的函数 import turtle, math, random, time wn = turtle.Screen() wn.bgcolor('grey') Rocket = turtle.Tur

我正在尝试制作一个小程序来了解更多信息,但在使用random时,我被卡住了

这是一个我要做的事情的例子

我试过使用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)

最后,我希望实现更多的随机过程,如大小和位置,但现在我只关注颜色。

在256范围内生成随机颜色(假设RGB)的一种方法是使用

根据jpmc26的评论,如果您使用的是Python 3.6+,则可以使用另一种不需要Numpy的方法。这可能是一个更好的选择,因为仅仅为了创建3个随机整数而导入Numpy是过分的

import random

color = tuple(random.choices(range(256), k=3))
print(color)
随机RGB输出示例

(248、88、28)

(165、248、150)

(18829135)


random.choice
从序列中返回一个随机元素,只需向其传递一个包含要从中选择的值的列表:

rand_color = random.choice(['blue', 'red'])
Rocket.color(rand_color)

无需使用其他导入,它相当简单:

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
使用(
200
255
23
)的随机值:

编辑:关于“我是否可以更改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())
这样,您可以随时调用
drawColor()

现在,您已经掌握了为图形随机设置颜色的基本知识,您可以对一些看起来非常棒的结果的值进行创造性设置(根据您的喜好调整整数):


好吧,我把随机选择做错了,我想它会更像火箭。颜色(random.choice(rand_color))谢谢!所以我尝试了这个,得到了这个错误“R=random.randrange(0,256,100)#最后一个值可选(step)AttributeError:module'random'没有属性'randrange',但我在python idle中尝试了它,它成功了,现在我也将在其他的上实现它,所以我只需将turtle.colormode()更改为Rocket.colormode()下一个呢?@jman8453:我建议您为颜色创建一个函数,然后在任何时候调用
Rocket.colormode()
您可以获得随机颜色;我将用一个示例编辑答案。非常感谢,在我在网上进行大量搜索后,我真的不希望得到太多帮助。我真的很兴奋能了解更多这方面的信息,并制作一些我自己的东西,但到目前为止,这是一个非常有趣的学习ce!idle一直告诉我一个错误,没有名为numpy的模块,这是因为我使用了turtle还是什么?这是另一个包,你可以用
python安装它-m pip install numpy
numpy
是一个强大的包,用于使用N维数组对象进行计算。安装没有多大意义(甚至不导入IMO)它只用于创建3个随机整数。我同意它主要用于数字处理,可能有些过分,但它只是生成随机RGB颜色的另一个选项:)使用Python 3.6+,您可以使用
random.choices(范围(256),k=3)
,而无需numpy。
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())
#!/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")