Нужно нарисовать 3 простые полосы JES нарисовать полосы
Мне нужно сделать три полосы, первая должна быть 40% от высоты фигуры и шириной 256 пикселей, красный компонент постепенно увеличивается от 0 до 255 и пересекает изображение по горизонтали.
вторая -20% высоты фигуры, такая же ширина (высота 300) - сплошной зеленый
третий - 40% высоты фигуры, а синий уменьшится с 255-0
Я получаю ошибки на второй цикл for (rheight, rheight) Пожалуйста, помогите!
def drawLines():
height = int(input("Enter Height: "))
width = 256
picture = makeEmptyPicture(width,height)
rheight = height*0.4
redValue = 0
for y in range(0,height):
for x in range(0,width):
pixel = getPixel(picture, x, y)
color = makeColor(redValue,0,0)
setColor(pixel, color)
redValue = redValue + 50
explore(picture)
for y in range(rheight,rheight):
for x in range(0, width):
pixel = getPixel(picture, x, y)
color = makeColor(0, 0, 0) # Change the current pixel to black
setColor(pixel, color)
explore(picture)
2 ответа
По поводу вашей ошибки:
The error was: 1st arg can't be coerced to int
Inappropriate argument type.
An attempt was made to call a function with a parameter of an invalid type.
This means that you did something such as trying to pass a string to a method
that is expecting an integer.
Это потому что range()
функциональные потребности integers
в качестве аргументов.
Когда вы делаете rheight = height*0.4
, как 0.4
является числом с плавающей запятой, интерпретатор python/jython также вычисляет "высоту *0,4" как число с плавающей запятой. В результате "Rheight", будучи поплавком.
Исправить: вы должны явно cast
значение как целое число:
rheight = int(height*0.4)
Простой способ увеличить значения цвета на единицу и избежать повторного уровня:
def d():
file = pickAFile()
pic = makePicture(file)
w= getWidth(pic)
h= getHeight(pic)
show (pic)
newPic = makeEmptyPicture(w,h)
for y in range (0 ,h-1):
for x in range(0,w-1):
pixel = getPixel(pic, x, y)
newPixel = getPixel(newPic,x, y)
if(y == h*0.4):
#the red value will increase incrementally by one as the x value increases
color = makeColor(x,0,0)
else:
color = getColor(pixel)
setColor(newPixel, color)
writePictureTo(newPic, r"D:\temp.jpg")
explore(newPic)
Просто измените цвет и горизонтальные или вертикальные значения и параметры по мере необходимости. Следуя логике этого типа, вы получите результаты