以下代码是在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)