0

以下代码在 JES 中创建并使用 JES 内置函数:makeEmptyPicture()、requestInteger()、addRectFilled。否则代码是自包含的。它返回错误“最后输入不是颜色”。
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)

尝试了一个变化:

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

抛出同样的错误

干杯

保罗格林伍德

4

2 回答 2

0

我认为问题在于c[n]用于从名为 的数组中选择一种颜色c,但有时您的值 forn太大了。所以,正在发生的事情是您将c[n]其用作函数的输入

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

n但如果它太大,最后一个输入值将为空。您可能需要考虑模数之类的东西,以便您可以循环使用颜色。

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

于 2014-08-07T20:09:29.507 回答
0

从颜色 [] 列表中删除了引号
使用模来循环颜色

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)
于 2014-08-08T03:09:06.597 回答