我正在尝试编写一些小程序以了解更多信息,但是在使用随机数时会陷入困境。
这是我要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)
最终,我想实现更多的随机过程,例如大小和位置,但现在我只关注颜色。
答案 0 :(得分:16)
不使用其他导入,这很简单:
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()
。
现在,您已经具备了为图形随机化颜色的基础,您可以通过一些令人敬畏的外观结果(根据自己的喜好调整整数)的值来变得很有创意:
#!/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")
答案 1 :(得分:5)
一种生成256范围内的随机颜色(假设RGB)的方法是使用np.random.choice
。
import numpy as np
color = tuple(np.random.choice(range(256), size=3))
print(color)
根据jpmc26的评论,如果您使用的是Python 3.6+,则不需要Numpy的另一种方法是使用random.choices
。这可能是一个更好的选择,因为仅导入Numpy来创建3个随机整数是多余的。
import random
color = tuple(random.choices(range(256), k=3))
print(color)
随机RGB输出示例
(248,88,28)
(165,248,150)
(188,29,135)
答案 2 :(得分:4)
random.choice
从序列中返回一个随机元素,只需将要从中选择值的列表传递给它即可:
rand_color = random.choice(['blue', 'red'])
Rocket.color(rand_color)