In this programming assignment, you will be writing a program that prints out several shapes via text. In this PA, you will be required to use functions and parameters. This is both to reduce redundancy and to make your code clean and well-structured. Name your program shaper.py.

Your program should have the capability to print out three different shapes: An hourglass, a plumbbob, or a house. Below is a table that shows examples of each of these shapes. see image.

Notice that there are some common shapes within these larger shapes. All three also utilize the |---------| line. All three utilize an upward-facing arrow. Both the hourglass and the plumbbob Have a downward-facing arrow. The characters in the arrows may differ, but the overall shapes are the same (other than the two directions).

Input Values

Your program should accept two values as input. The first should be a selection of the shape to print. It should check for hourglass, plumbbob, and house. The check should be case insensitive. After asking for the shape, the program should ask for a single character, which should be used for the arrow(s). It should also ask for an integer, which will determine the number of |---------| rows to print out at one or more location(s) in the shape.

If a supported shape is entered, the program should print out that shape utilizing the character for the arrow(s). If none of the three valid shapes are entered, the program should print out a message and then ask the user for their selection again. You do not need to validate the single-character or integer input. See the examples to determine what the prompts and message should be.

Program Structure

In your program, you should write a function that allows you to print out these three sub-shapes. You should write one function for the upward-facing arrow, one for the downward-facing arrow, and one to print any number of rows of |---------|. Each of these functions should take one parameter. The two arrow functions should take the character that the arrow should be made up of as a parameter. The row function should accept an integer, which will determine the number of rows to print.

Restrictions

  • You may not use string multiplication (* with strings)
  • You must have a main function
  • No function should be longer than 30 lines, including comments
  • You should have at least 4 purposeful functions
  • You may not have any code that is not in a function, other than a call to main()

Examples

Examples: see image.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.