All exercises from Downey, Allen. Think Python. Green Tea Press, 2014. http://www.greenteapress.com/thinkpython/

Exercise 1 (Wendy)

Write a function called distance_between_points that takes two Points as arguments and returns the distance between them.

Exercise 2 (Sarah)

Write a function named move_rectangle that takes a Rectangle and two numbers named dx and dy. It should change the location of the rectangle by adding dx to the x coordinate of corner and adding dy to the y coordinate of corner.

Exercise 3 (Liu)

Write a version of move_rectangle that creates and returns a new Rectangle instead of modifying the old one.

Exercise 4 (Dan)

Swampy (see Chapter 4) provides a module named World, which defines a user-defined type also called World. You can import it like this:

from swampy.World import World

Or, depending on how you installed Swampy, like this:

from World import World

The following code creates a World object and calls the mainloop method, which waits for the user.

world = World()
world.mainloop()

A window should appear with a title bar and an empty square. We will use this window to draw Points, Rectangles and other shapes. Add the following lines before calling mainloop and run the program again.

canvas = world.ca(width=500, height=500, background='white')
bbox = [[-150,-100], [150, 100]]
canvas.rectangle(bbox, outline='black', width=2, fill='green4')

You should see a green rectangle with a black outline. The first line creates a Canvas, which appears in the window as a white square. The Canvas object provides methods like rectangle for drawing various shapes.

bbox is a list of lists that represents the “bounding box” of the rectangle. The first pair of coordinates is the lower-left corner of the rectangle; the second pair is the upper-right corner.

You can draw a circle like this:

canvas.circle([-25,0], 70, outline=None, fill='red')

The first parameter is the coordinate pair for the center of the circle; the second parameter is the radius. If you add this line to the program, the result should resemble the national flag of Bangladesh (see http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags).

  1. Write a function called draw_rectangle that takes a Canvas and a Rectangle as arguments and draws a representation of the Rectangle on the Canvas.
  2. Add an attribute named color to your Rectangle objects and modify draw_rectangle so that it uses the color attribute as the fill color.
  3. Write a function called draw_point that takes a Canvas and a Point as arguments and draws a representation of the Point on the Canvas.
  4. Define a new class called Circle with appropriate attributes and instantiate a few Circle objects. Write a function called draw_circle that draws circles on the canvas.
  5. Write a program that draws the national flag of the Czech Republic. Hint: you can draw a polygon like this:
    points = [[-150,-100], [150, 100], [150, -100]]
    canvas.polygon(points, fill='blue')
    I have written a small program that lists the available colors; you can download it from http://thinkpython.com/code/color_list.py.

In [ ]: