python random colors

python - Cómo usar al azar para elegir colores.



random colors (3)

Estoy tratando de hacer un pequeño programa para aprender más, pero estoy atascado cuando se trata de usar al azar.

Aquí hay un ejemplo de lo que estoy haciendo en https://trinket.io/Python/3338c95430

He intentado usar random.randrange, random.choice, random.random con todo para ellos y envía un código de error que dice que random no tiene una función de randrange, elección o 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)

Eventualmente, me gustaría implementar más procesos aleatorios como el tamaño y la ubicación, pero por ahora solo me estoy enfocando en el color.


Sin usar importaciones adicionales es bastante simple:

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

Usando valores aleatorios de ( 200 , 255 , 23 ):

EDITAR : En relación con "¿acabo de cambiar el turtle.colormode () a Rocket.colormode () para el siguiente?"

La forma en que lo recomendaría sería crear una función:

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())

De esta manera, puede llamar a drawColor() cuando quiera un nuevo color.

Ahora que tiene los conceptos básicos de los colores aleatorios para su dibujo, puede ser bastante creativo con los valores de algunos resultados impresionantes (ajuste los enteros a su gusto):

#!/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")


Una forma de generar colores aleatorios (suponiendo RGB) dentro del rango de 256 es usar np.random.choice .

import numpy as np color = tuple(np.random.choice(range(256), size=3)) print(color)

Según el comentario de jpmc26, otro método sin requerir Numpy es usar random.choices si está usando Python 3.6+. Esta es probablemente una mejor opción ya que la importación de Numpy solo para crear 3 enteros aleatorios es una exageración.

import random color = tuple(random.choices(range(256), k=3)) print(color)

Ejemplo de salida aleatoria RGB

(248, 88, 28)

(165, 248, 150)

(188, 29, 135)


random.choice devuelve un elemento aleatorio de una secuencia, solo pásele una lista con los valores que desea elegir:

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