使用列表元素作为addrectfill的颜色



以下代码是在JES中创建的,并使用了JES内置函数:makeEmptyPicture(),requestInteger(), addrectfill。否则,代码是自包含的。它返回错误"Last input is not a color"。
C [n]似乎是问题所在。有人能解释一下原因吗?

barChart=makeEmptyPicture(500,500)
bars=[0]
c = ["red","orange","yellow","green","blue","magenta","black","gray"]
nbars=requestInteger("How many bars")
for n in range(nbars):
  bars.append(requestInteger("Enter Bar Value"))
for n in range(len(bars)):
  addRectFilled(barChart ,(30+n*30) , 500-bars[n] , 20 , bars[n] ,c[n])
show(barChart)

try a variation:

addRectFilled(barChart ,(30+n*30) , 500-bars[n] , 20 , bars[n] ,c[2])

抛出相同的错误

欢呼保罗格林伍德

我认为问题是c[n]被用来从名为c的数组中选择一种颜色,但有时您的n值太大。所以,你使用c[n]作为函数

的输入
addRectFilled(barChart ,(30+n*30) , 500-bars[n] , 20 , bars[n] ,c[n])

,但如果n太大,最后一个输入值将为null。你可能想考虑一些类似模的东西,这样你就可以在颜色中循环了。

数组中的颜色值也是字符串而不是颜色。您可以通过删除引号使它们变成颜色。

删除color中的引号[]list
使用模来循环颜色

barChart = makeEmptyPicture(500,500)
bars=[]
colors = [red,orange,yellow,green,blue,magenta,black,gray]
nbars=requestInteger("How many bars")
for n in range(nbars):
  bars.append(requestInteger("Enter Bar Value " +str(n+1)))
for n in range(len(bars)):
  barColor = colors[(n)%8]
  addRectFilled(barChart ,(10+n*30) , 500-bars[n] , 20 , bars[n] ,barColor)
show(barChart)

相关内容

  • 没有找到相关文章

最新更新