title: How could I optimise this simple python pygame code
body: <p>I've been set a challenge to make a game using pygame ( I am making snake so it should be easy... but I've never used pygame) so using a more efficient language isn't an option.So my question is that I updating the snake grid is too slow and I'm not experienced enough in pygame to fix this, can anyone who is help.Also as a note if I only fill the grid it doesn't clear behind the Snake.
  Using python 3.8</p>
  <pre><code>import pygame
  import time
  import random
  
  pygame.init()
  
  display_width = 800
  display_height = 600
  display = pygame.display.set_mode((display_width,display_height))
  pygame.display.set_caption(&quot;Snake&quot;)
  
  pureblue = (0,0,255)
  purered = (255,0,0)
  puregreen = (0,255,0)
  white = (255,255,255)
  black = (1,1,1)
  grey = (50,50,50)
  darkgrey = (25,25,25)
  
  
  clock = pygame.time.Clock()
  
  snake_block = 10
  snake_speed = 30
  
  font_style = pygame.font.SysFont(None, 50)
  
  def drawGrid():
      blockSize = 10 
      for x in range(display_width):
          for y in range(display_height):
              rect = pygame.Rect(x*blockSize, y*blockSize,blockSize, blockSize)
              pygame.draw.rect(display, darkgrey, rect, 1)
  
  def message(msg, colour):
      text = font_style.render(msg, True, colour)
      display.blit(text, [display_width/2, display_height/2])
  
  def SnakeGameLoop():
      game_over = False
  
      X = display_width/2
      Y = display_height/2
  
      X_change = 0
      Y_change = 0
  
      while not game_over:
          for event in pygame.event.get():
              if event.type == pygame.QUIT:
                  game_over = True
              if event.type == pygame.KEYDOWN:
                  if event.key == pygame.K_LEFT:
                      X_change = -10
                      Y_change = 0
                  elif event.key == pygame.K_RIGHT:
                      X_change = 10
                      Y_change = 0
                  elif event.key == pygame.K_UP:
                      X_change = 0
                      Y_change = -10
                  elif event.key == pygame.K_DOWN:
                      X_change = 0
                      Y_change = 10
  
          if X &gt;= display_width or X &lt; 0 or Y &gt;= display_height or Y &lt; 0:
              game_over = True
  
          X += X_change
          Y += Y_change
          display.fill(grey)
          drawGrid()
          pygame.draw.rect(display,puregreen,[X,Y,10,10])
  
          pygame.display.update()
          clock.tick(15)
  
      message(&quot;You lost&quot;, purered)
      pygame.display.update()
      time.sleep(2)
  
      pygame.quit()
      quit()
  
  SnakeGameLoop()
  </code></pre>