Calculating the area of various 2D shapes
Since you're not using shape extensively I would get rid of that data structure all together. It would be easier to read inline then having to look to the margin for comments.

For example:

  if target_shape == 'square':                                     
     l = float(input("give the length: "))                          
     area_square = l ** 2
     print("the area of the square is %.2f" % (area_square))


When comparing strings if you don't want to be strict you should normalize them before compare.

For example:

'Square'.lower() == 'square'


so your code would become:

  if target_shape.lower() == 'square':                                     
     l = float(input("give the length: "))                          
     area_square = l ** 2
     print("the area of the square is %.2f" % (area_square))


You're not accounting for any errors. What if the user hits enter without giving a length?

ValueError: could not convert string to float