проблема с подушкой python, не совсем понимаю, что не так

#python #python-imaging-library

Вопрос:

Таким образом, мы в основном должны делать коробки, выглядящие так, с подушкой: [введите описание изображения здесь] 1 Коробки должны формироваться случайным образом.

 def draw_quilt():
  width = 400
  height = 400
  grid_size = width / 4

  img = Image.new("RGB", (width, height))
  draw = ImageDraw.Draw(img)

  r = 0; g = 192; b = 192
  for higher_y in range(0, height, grid_size):
    lower_y = higher_y-grid_size
    r  = 10; g-= 10; b-= 10 
    for higher_x in range(0,width, grid_size):
      lower_x = higher_x grid_size
      draw_patches(draw, int(grid_size / randomint(1,3), top_x, top_y, bottom_x, bottom_y, (r, g, b))

def draw_patches(draw, patch_width, start_x, start_y, end_x, end_y, color):
  r = color[0]; g = color[1]; b = color[2]
  for top_y in range(start_y, end_y, patch_width):
    r  = 10; g  = 5; b  = 3
    bottom_y = top_y   patch_width
    for top_x in range(start_x, end_x, patch_width):
      r  = 10; g  = 5; b  = 3
      bottom_x = top_x   patch_width
      draw.rectangle((top_x, top_y, bottom_x, bottom_y), fill = (r, g, b))

if __name__ == "__main__":

    img  = Image.new("RGB", (width, height))
    draw = ImageDraw.Draw(img)
    
    draw_quilt()

    img.save('question4.png')
    img.show()
 

Я не совсем уверен в том, что не так, но на экране постоянно появляется «Синтаксическая ошибка»

Ответ №1:

Вы пропускаете закрытие ) в конце этой строки:

 draw_patches(draw, int(grid_size / randomint(1,3), top_x, top_y, bottom_x, bottom_y, (r, g, b))
 

То SyntaxError , что вы получаете, находится в строке, которая содержит def draw_patches , но фактическая ошибка-это предыдущая строка.

Комментарии:

1. @sj95162 немного изменил код, теперь ошибок нет, но он ничего не рисует (я поместил новый код ниже).

Ответ №2:

 def draw_quilt():
  width = 400
  height = 400
  grid_size = int(width / 4)

  img = Image.new("RGB", (width, height))
  draw = ImageDraw.Draw(img)

  r = 150; g = 299; b = 299
  for top_y in range(0, height, grid_size):
    r  = 10; g  = 5; b  = 3
    bottom_y = top_y   grid_size
    for top_x in range(0, width, grid_size):
      r  = 10; g  = 5; b  = 3
      bottom_x = top_x   grid_size
      draw_patches(draw, int(grid_size // randint(1,3)), top_x, top_y, bottom_x, bottom_y, (r, g, b))

def draw_patches(draw, patch_width, start_x, start_y, end_x, end_y, color):
  r = color[0]; g = color[1]; b = color[2]
  for top_y in range(start_y, end_y, patch_width):
    r  = 10; g  = 5; b  = 3
    bottom_y = top_y   patch_width
    for top_x in range(start_x, end_x, patch_width):
      r  = 10; g  = 5; b  = 3
      bottom_x = top_x   patch_width
      draw.rectangle((top_x, top_y, bottom_x, bottom_y), fill = (r, g, b))

if __name__ == "__main__":

    img  = Image.new("RGB", (width, height))
    draw = ImageDraw.Draw(img)
    
    draw_quilt()

    img.save('question4.png')
    img.show()