【问题标题】:Drawing a polygon in Python with a set of random colors在 Python 中使用一组随机颜色绘制多边形
【发布时间】:2016-09-27 21:42:42
【问题描述】:

我正在开发一个简单的python程序,它提示用户输入多边形边的长度,程序(使用turtle)将使用random.randint设置的随机颜色绘制多边形

到目前为止我的代码是:

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

所以总结一下,我如何让填充颜色与随机 randint 中的设置颜色相匹配?

【问题讨论】:

  • 您可以使用random.choice 来简化您的代码。那我想你在turtle.pen 通话中需要fillcolor = fillcolor
  • 我正在进行的项目声明我必须使用随机输入 (random.randint)。我一直在尝试调整代码,但仍然出现错误。我对 python 很陌生,所以用简单的术语工作最适合我

标签: python turtle-graphics


【解决方案1】:

我同意您选择随机颜色的事实

randomColor = random.randint(0,5)

但是当你想为你的多边形设置随机颜色时

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

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

所以请您更改以下行:

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

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

【讨论】:

  • 这可能已经成功了。但是我收到一个新错误: Traceback(最近一次调用最后一次):文件“C:/Python33/pol1.py”,第 11 行,在 for i in range(numberOfSides): TypeError: 'float' object cannot被解释为整数
  • 别在意最后的评论。我发现是我的数学使它成为浮动。 (fillcolor=fillcolor) 确实修复了它。我以为我早些时候尝试过,但它没有用,但它现在对我有用。谢谢两位的帮助
  • 如果问题得到解决,您可以尽快关闭该问题。
【解决方案2】:

我同意 @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()

稍后可以通过将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() 选择随机颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    相关资源
    最近更新 更多