使用一组随机颜色在Python中绘制多边形

时间:2016-09-27 21:42:42

标签: python turtle-graphics

我正在开发一个简单的python程序,它提示用户输入多边形边的长度,程序(使用乌龟)将使用随机设置的随机颜色绘制多边形。 / p> 到目前为止,我的代码是:

import turtle

polygonSideLength = int(input('Enter length of polygon side: \n'))
numberOfSides = 5 + (7 / 4)
turnAngle = 360 / numberOfSides

import random
randomColor = random.randint(0,5)
if randomColor == 0:
    fillcolor="red"
elif randomColor == 1:
    fillcolor="green"
elif randomColor == 2:
    fillcolor="blue"
elif randomColor == 3:
    fillcolor="cyan"
elif randomColor == 4:
    fillcolor="magenta"
elif randomColor == 5:
    fillcolor="yellow"


turtle.begin_fill()
turtle.pen(pensize = 5, pencolor="black", fillcolor = randomColor)

for i in range(numberOfSides):
    turtle.forward(polygonSideLength)
    turtle.right(turnAngle)
turtle.end_fill()
turtle.done()

我发现代码中的问题是“fillcolor = randomColor”

我收到的错误是“未知的颜色名称:5” 我知道randint正在工作,因为有时错误给了我1,2,3,4,5

总而言之,如何让fillcolor与随机randint中的设定颜色相匹配?

2 个答案:

答案 0 :(得分:0)

我同意你选择随机颜色

这一事实
randomColor = random.randint(0,5)

但是当您想要将随机颜色设置为多边形时

指定一个整数(randomColor变量的值)而不是字符串(fillcolor变量的值)

fillcolor变量应该是一个带有颜色名称值(“蓝色”,“白色”,“红色”等)的字符串类型,但绝不是整数。

所以请你改变以下一行:

turtle.pen(pensize = 5, pencolor="black", fillcolor = randomColor)

turtle.pen(pensize = 5, pencolor="black", fillcolor = fillcolor)

答案 1 :(得分:0)

我同意@stellasia random.choice()是你最好的选择,但如果你需要使用random.randint(),这是一种方法:

import turtle
import random

COLORS = ["red", "green", "blue", "cyan", "magenta", "yellow"]

fillcolor = COLORS[random.randint(0, len(COLORS) - 1)]
turtle.pen(pensize=5, pencolor="black", fillcolor=fillcolor)

numberOfSides = 6
turnAngle = 360 / numberOfSides

polygonSideLength = int(input('Enter length of polygon side: '))

turtle.begin_fill()
for _ in range(numberOfSides):
    turtle.forward(polygonSideLength)
    turtle.right(turnAngle)
turtle.end_fill()

turtle.done()

通过将random.choice()分配行替换为:

,以上内容可以轻松更改为fillcolor
fillcolor = random.choice(COLORS)

颜色选择的另一种方式是完全随机的,使用random.random(),并将前几行更改为:

import turtle
import random

fillcolor = (random.random(), random.random(), random.random())
turtle.pen(pensize=5, pencolor="black", fillcolor=fillcolor)

...

这里不是颜色名称,而是使用乌龟颜色允许的另一个可能性,即RGB三联,例如:(0.5,0.9,0.1)有两种乌龟RGB三重模式:0.0到1.0,默认使用上面,我们使用turtle.colormode(255)选择0到255。这意味着我们可以回到使用random.randint()并且仍然具有完全随机的颜色:

turtle.colormode(255)
fillcolor = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
turtle.pen(pensize=5, pencolor="black", fillcolor=fillcolor)

因此,我们现在有两种完全不同的方法可以使用turtle.randint()选择随机颜色。