以下代码是在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])
引发相同的错误
干杯
保罗格林伍德答案 0 :(得分:0)
我认为问题在于c[n]
用于从名为c
的数组中选择颜色,但有时n
的值太大。那么,你正在使用c[n]
作为函数的输入
addRectFilled(barChart ,(30+n*30) , 500-bars[n] , 20 , bars[n] ,c[n])
但如果n
太大,那么最后一个输入值将为null。您可能需要考虑模数之类的东西,以便循环显示颜色。
数组中的颜色值也是字符串而不是颜色。您可以通过删除引号将它们变成颜色。
答案 1 :(得分: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)