2017-04-16 217 views
2

enter image description here得到明亮颜色随机的Python

大家好,我的蛇游戏程序,我需要当用户选择一个“彩虹”的主题,以生成一个随机的颜色多次。网上通缉后,我发现这一点:

Generating a Random Hex Color in Python

得票最多的答案给了

import random 
r = lambda: random.randint(0,255) 
print('#%02X%02X%02X' % (r(),r(),r())) 

但是一个解决方案,该方案产生非常暗淡的颜色为好;例如深棕色,有时甚至是黑色。正如你所看到的,其中一些颜色不符合彩虹主题。

你会如何改变上面的代码,让你明白的橙色,粉红色,红色,蓝色等鲜艳的色彩,你明白了。一个假设的解决方案是增加randint r的最小值,但这只是使所有的颜色都变成了白色。 :!“(

PLZ,PLZ,PLZ,帮助将是非常赞赏

谢谢你们

+1

'random.randint(128,255)'将保持它的光明一面。 – schwobaseggl

+0

另一件事情是,当十六进制的三个部分是相似的(如#000000或#ececec你得到一个灰度的颜色,所以要避免这些 – Lucas

+2

你可以生成HSV颜色,高饱和度,然后将其转换为RGB。在标准库中进行转换的'colorsys'模块:https://docs.python.org/3.6/library/colorsys.html –

回答

5

创建一个随机HLS颜色(周围使用0.5号为“级别”参数和上面的数字。 5作为“饱和度”参数)并将它们转换为RGB:

import random 
import colorsys 
h,s,l = random.random(), 0.5 + random.random()/2.0, 0.4 + random.random()/5.0 
r,g,b = [int(256*i) for i in colorsys.hls_to_rgb(h,l,s)] 

这将确保您始终拥有高饱和度,明亮的颜色。

+0

谢谢蒂姆,我对你的代码做了一些修改,但是这绝对让我着迷正确的轨道。感谢方便的维基百科页面,[链接](https://en.wikipedia.org/wiki/HSL_and_HSV),也是一个不错的网站[链接](http://hslpicker.com/#0af529 ),我能够找到一个很好的“饱和度”和亮度(l)范围:是的,根据维基是轻的。 – Lunkle

0

为什么不只是把自己喜欢的所有颜色的十六进制代码列表中,并生成?该列表随机指标我使用你的颜色名称,而不是十六进制代码了,但例如:

>>> clist = ["orange", "pink", "red", "blue"] 
>>> for i in range (1, 10): 
...  rcol = random.randint(0,len(clist)-1) 
...  print(clist[rcol]) 
... 
red 
orange 
red 
pink 
orange 
orange 
red 
blue 
pink