Использование элемента списка в качестве цвета для 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)