Lab15: Practice with nested loops

 

Background

In the good old days, we didn't have fancy computer graphics. So we had to rely on ASCII art and the user's imagination. Today's lab will take you back in time! Your task is to draw various pictures of stars ('*') that require the creative use of iteration and decisions.

Collaboration: You are encouraged to work with another student to complete this lab. Each of you should submit your own copy of the programs. It's okay if your files are similar or identical, as long as both of your names are present at the top.

stars

Objectives

  • Write nested for loops and decisions.
  • Solve counting problems with loops.

Instructions

  1. Download stars.py and open this in Thonny.
  2. Write your name and today's date in the docstring comment.
  3. Run the program. What shape does this pattern produce?
  4. Notice the relationship between the row (outer loop) and the number of stars that are printed.
  5. Notice the relationship between the col (inner loop) and the place where we move to a new line.
  6. Add code to your program to create functions for Patterns A, B, and C as shown below.
  7. The function should include a parameter max_rows that will give the number of rows to output.

Pattern A

**********
*********
********
*******
******
*****
****
***
**
*

The leftmost stars are in the leftmost output column. Test your code with an odd number of stars and an even number of stars.

HINT: While developing the code, replace each space with another character that is visible.

Pattern B

         *
        **
       ***
      ****
     *****
    ******
   *******
  ********
 *********
**********

The leftmost star of the last row is in the first position of the output column.

HINT: You used star_count in the original example and Pattern A. You should think about using the blank_count variable as well.

Pattern C

**********
 *********
  ********
   *******
    ******
     *****
      ****
       ***
        **
         *

The top row, leftmost star is in the first position of the output.

HINT: It should be the same as Pattern B, except for the way you calculate blank_count and star_count.

 

Expected value file for diff testing lab15.exp

Generalization

  1. Finish the functions patterns A, B, and C. 
  2. Be sure to write a meaningful documentation comment including Args tags. 

Submit stars.py via https://gradescope.com  by the end of the day. If you finish early, work the following pattern D.

Pattern D  (Not graded, but for extra practice)

     *
    ***
   *****
  *******
 *********
  *******
   *****
    ***
     *

For an odd number of rows, you would only have one middle line. The middle row leftmost star is in the first position of the output.

HINT: Consider writing two loops: one for the top half, and another for the bottom half. You may also want to increment and decrement star_count and blank_count, rather than calculate them directly based on the row number.

Back to Top