def colorGradient(color1, color2, steps):
   """
   Returns a list of RGB colors creating a "smooth" gradient between 'color1' 
   and 'color2'.  The amount of smoothness is determined by 'steps', which specifies
   how many intermediate colors to create. The result includes 'color1' but not
   'color2' to allow for connecting one gradient to another (without duplication 
   of colors).
   """
   gradientList = []   # holds RGB lists of individual gradient colors
   
   # find difference between color extremes
   differenceR = color2[0] - color1[0]   # R component
   differenceG = color2[1] - color1[1]   # G component
   differenceB = color2[2] - color1[2]   # B component
   
   # interpolate RGB values between extremes
   for i in range(steps):
      gradientR = color1[0] + i * differenceR / steps
      gradientG = color1[1] + i * differenceG / steps
      gradientB = color1[2] + i * differenceB / steps

      gradientList.append( [gradientR, gradientG, gradientB] )
   # now, gradient list contains all the intermediate colors, including color1 
   # but not color2
   
   return gradientList   # so, return it