Использование элемента списка в качестве цвета для addRectFilled

Следующий код был создан в JES и использует встроенные функции JES: makeEmptyPicture(),requestInteger(),addRectFilled. В противном случае код является автономным. Возвращает ошибку "Последний ввод не цветной".
с [п], кажется, проблема. Может кто-нибудь объяснить, почему?

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])

Выдает ту же ошибку

ура

Пол Гринвуд

2 ответа

Решение

Я думаю, что проблема в том, что c[n] используется для выбора цвета из массива с именем cно иногда ваша ценность для n слишком велик Итак, что происходит, вы используете c[n] как вход в функцию

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

но это последнее входное значение будет нулевым, если это n слишком велик Возможно, вы захотите рассмотреть что-то вроде модуля по модулю, чтобы вы могли переключаться между цветами.

Ваши значения цвета в вашем массиве также являются строками, а не цветами. Вы можете превратить их в цвета, удалив кавычки.

Удалены цитаты из списка цветов []
Используется по модулю для переключения между цветами

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)
Другие вопросы по тегам