This is a group assignment. Be sure to review our Code of Conduct for pair programming and be careful to adhere to it when working on the assignment. Keep in mind that you both must be authors of all code submitted.
Problem 1: Describing Numbers
Write a program
describe_number.py that asks the user for a number and then prints a description of that number. The description of the number should adhere to the following rules.
- If it is less than -1,000,000 include
very smallin the output
- If it is more than 1,000,000 include
very largein the output
- If it is negative, include
negativein the output
- If it is positive, include
positivein the output
- If it is even, include
even(zero is considered even)
- If it is odd, include
oddin the output
- If it is of type int, include
number that is an intin the output
- If it is of float type, include
number that is a floatin the output
For example, here is a table of some inputs and their corresponding outputs.
|56||positive even number that is an int|
|-101.0||negative odd number that is a float|
|23.7||positive number that is a float|
|1000001||very large positive odd number that is an int|
This problem can get rather complicated if you “hard code” every possible case into a long series of conditionals. Instead, try to identify which tasks are independent of other tasks. For example, the positive / negative aspect of the number is independent of the int / float aspect of the number. Thus, you can determine these separately and combine your answer at the end.
Read input from the user using
eval(input()) on this problem. (Do not do this in general, but it is convenient for this problem.) If they type in a float, then it will be given a “float” type and if they type in an int, it will be given an “int” type. Then you can check if a variable
val is of type
int by using the Boolean expression:
type(val) == int
Problem 2: Whatzitdo?
Sometimes programmers write functions that are difficult to read. Let’s take a look at the following function.
def apple(orange, banana): """Given an orange and a banana, will return a salad""" salad = "" pear = 0 for i in range(orange): salad = salad + banana pear = pear + 1 return salad
a. Determine what the function is doing and give it a more appropriate name.
b. The variable names aren’t very helpful. Give them names that are more descriptive of what they are.
c. Clean up the function by removing any unnecessary code that does not serve a purpose.
d. Write a more appropriate docstring for the function and include the following sections
- A short one-line purpose statement
- A Parameters section listing the types of the parameters
- A Returns section briefly summarizing the return value and its type
- A Preconditions section if there are more restrictions on the input other than their type
- A Postconditions section that describes, in more detail, the exact relationship between the output and the inputs
e. Place the updated function from parts a-c above, along with its documentation in a file named
Problem 3: Color Chooser
Many programs include a “color chooser” feature that presents a user with an array of colors, waits for them to click the desired color, and then uses that color in some way. In this problem, you will write a function named
pick_color that could be used to such effect.
Begin by copying and pasting the following code into a file named
from graphics import * def pick_color(): """Asks the user to select a color with their mouse Returns: color, a string Postconditions: * A graphics window with several color options appears * Once the user clicks a color, the graphics window closes * Returns a string representation for the color selected""" pass # TODO: Replace this line with your solution def main(): print("Pick a color on the window.") color = pick_color() print("The color you picked is:", color) main()
pick_color function is called, a window like the following should appear.
Once the user clicks on the window, the graphics window should immediately close and the function should return the name of the color selected.
For example, if the program above is called and the user clicks in the upper right corner, the result should be:
Pick a color on the window The color you picked is: cyan
The choice of colors and their arrangement is up to you, but the function should successfully query the user to select a color and return the color they selected with their mouse.
- Remember that you can change the coordinate system using the
setCoordsmethod on the graphics window. If you are using a 3x2 grid like the one above, I recommend changing the coordinates to have (0,0) be the lower left and (3,2) be the upper right.
- You can wait for the user to click using the
getMouse()method on the graphics window. It returns the location of where the user clicked as a
- You can close a graphics window using the
- You may find it helpful to create additional helper functions, but it is not required.
How to Turn in Your Code
- Once you are finished with the assignment, you should go to https://codepost.io and log into your account.
- Go to the CS 65 course.
- Go to Assignment 5 and upload all of your files.
- After you submit the assignment, you should be able to reopen it and see a Partners tab at the top of the submission page. Send the link to your partner and have them open it while logged in with their account.
- That’s it! You’ve just submitted your assignment.
Important Grading Criteria
I will evaluate your work with the following criteria in mind.
- Correctness. Does your code do what is asked? (e.g. named correctly, input and outputs correct values, etc.)
- Formatting. Is your code formatted so that it is easy to understand?
- Elegance. Is your code concise and elegant?