04 Prove Assignment: Writing Functions
Purpose
Prove that you can write functions with parameters and call those functions multiple times with arguments.
Problem Statement
In English, a preposition is a word used to express spatial or temporal relations, such as “in”, “over”, and “before”. A prepositional phrase is group of words that begins with a preposition and includes a noun. For example:
above the water
in the kitchen
after the meeting
Assignment
Write the second half of a Python program that generates simple English sentences that you began in the previous lesson’s prove milestone. As part of the previous lesson’s prove milestone, you wrote a program that generates English sentences with three parts: a determiner, a noun, and a verb. During this prove assignment, you will add functions so that your program generates sentences with four parts:
- a determiner
- a noun
- a verb
- a prepositional phrase
For example:
One girl talked for the car.
A bird drinks off one child.
The child will run on the car.
Some dogs drank above many rabbits.
Some children laugh at many dogs.
Some rabbits will talk about some cats.
To complete this prove assignment, your program must include at least these seven functions:
main
make_sentence
get_determiner
get_noun
get_verb
get_preposition
get_prepositional_phrase
You may add other functions if you find them helpful. The
get_preposition
function must randomly choose a
preposition from a list and return the randomly chosen preposition.
The get_prepositional_phrase
function must make a
prepositional phrase by calling the get_preposition
,
get_determiner
, and get_noun
functions.
Help
If you’re having trouble completing this assignment, reading related online documentation, using a generative AI as a tutor, or working with a human tutor will help you complete it.
Helpful Documentation
- The preparation content for lesson 2 explains how to call functions.
- The preparation content for lesson 3 explains how to write functions.
- The preparation content for this lesson explains variable scope and good function design.
Help from an AI Tutor
You could use a generative AI as a tutor to help you write and troubleshoot your program. Bro. Lee Barney created a custom Chat GPT named Pythonista that is fine-tuned to focus on Python functions, loops, if statements, and related programming concepts. If your program is generating an error, ask Pythonista a question like this:
I'm writing a Python program that generates simple, random English sentences. When I run my program, it causes the following error. Please suggest some mistakes that might cause this error.
(Copy and paste the error message here.)
You could also ask Pythonista a question about one of your functions, like this:
I wrote the following Python function that is supposed to (type a short description here). However, the function isn't (type what it's not doing correctly here). Please help me fix this function.
(Copy and paste your Python function here.)
Help from a Human Tutor
As a BYU-Idaho campus or online student you can get help from a tutor to complete your CSE 111 assignments. Each tutor is a current BYU-Idaho student employed by BYU-Idaho. Meeting with a tutor is free. It will not cost you any money to meet with a tutor. To get help from a tutor, you simply make an appointment and then meet with the tutor. Campus students meet with tutors in the tutoring center. Online students meet with tutors in Zoom. To make an appointment, follow the instructions in the course tutoring guide.
Steps
Do the following:
- Use the
get_determiner
function from the previous lesson’s prove milestone as an example to help you write theget_preposition
function. Theget_preposition
function must have the following header and fulfill the requirements of the following documentation string.def get_preposition(): """Return a randomly chosen preposition from this list of prepositions: "about", "above", "across", "after", "along", "around", "at", "before", "behind", "below", "beyond", "by", "despite", "except", "for", "from", "in", "into", "near", "of", "off", "on", "onto", "out", "over", "past", "to", "under", "with", "without" Return: a randomly chosen preposition. """
- Write the
get_prepositional_phrase
function to have the following header and fulfill the requirements of the following documentation string.def get_prepositional_phrase(quantity): """Build and return a prepositional phrase composed of three words: a preposition, a determiner, and a noun by calling the get_preposition, get_determiner, and get_noun functions. Parameter quantity: an integer that determines if the determiner and noun in the prepositional phrase returned from this function should be single or plural. Return: a prepositional phrase. """
Add code to the
make_sentence
function and write any other functions that you think are necessary for your program to generate and print six sentences, each with a determiner, a noun, a verb, and a prepositional phrase. The six sentences must have the following characteristics:Quantity Verb Tense a. single past b. single present c. single future d. plural past e. plural present f. plural future
Call Graph
The following call graph shows the user-defined functions and
function calls and returns as you should write them in your
sentences.py
program. From this call graph we see the
following function calls:
- The computer starts executing the
sentences.py
program by calling themain
function. - While executing the
main
function, the computer calls themake_sentence
function. - While executing the
make_sentence
function, the computer calls theget_determiner
,get_noun
,get_verb
, andget_prepositional_phrase
functions. - While executing the
get_prepositional_phrase
function, the computer calls theget_preposition
,get_determiner
, andget_noun
functions. - While executing each of the
get_determiner
,get_noun
,get_verb
, andget_preposition
functions, the computer calls therandom.choice
function. - Then, the computer executes the
str.capitalize
method. - Finally, the computer executes the
print
function.
get_prepositional_phrase
function calls the
get_preposition
, get_determiner
, and
get_noun
functions.Testing Procedure
Verify that your test program works correctly by following each step in this procedure:
- Run your
sentences.py
program and ensure that your program’s output is similar to the sample run output shown here. Because your program randomly chooses the determiners, nouns, verbs, and prepositions, your program will generate different sentences than the ones shown here.> python sentences.py One girl talked for the car. Some dogs drank above many rabbits. One bird drinks off one child. Some children laugh at many dogs. The child will run on the car. Some rabbits will talk about some cats.
Exceeding the Requirements
If your program fulfills the requirements for this assignment as described in the previous prove milestone and the Assignment section above, your program will earn 93% of the possible points. In order to earn the remaining 7% of points, you will need to add one or more features to your program so that it exceeds the requirements. Here are a few suggestions for additional features that you could add to your program if you wish.
- Within your
make_sentence
function add another call toget_prepositional_phrase
so that each sentence includes two prepositional phrases like this:One girl across one cat talked for the car.
A bird near the rabbit drinks off one child.
The child under the cat will run on the car.
Some dogs without a cat drank above many rabbits.
Some children from a bird laugh at many dogs.
Some rabbits behind one man will talk about some cats. - Write a function named
get_adjective
and call it in yourmake_sentence
function to add an adjective to the sentences produced by your program. Does it make sense to callget_adjective
in yourget_prepositional_phrase
function? - Write a function named
get_adverb
and call it in yourmake_sentence
function to add an adverb to the sentences produced by your program.
Ponder
What changes would you have to make to your program so that it could produce sentences that fit the following form?
{Determiner} {adjective} {noun} {prepositional_phrase} {adverb} {verb} {determiner} {adjective} {noun} {prepositional_phrase}.
Such as these sentences:
The red birds in the air quickly ate some fast fish in the water.
The busy bird with a car sweetly drank many smart rabbits by one boy.
One dinky boy near the dog calmly grew some tall children across a cat.
How hard would it be to modify your program to pass the Turing test?
Submission
To submit your program, return to I‑Learn and do these two things:
- Upload your
sentences.py
file for feedback. - Add a submission comment that specifies the grading category that best describes your program along with a one or two sentence justification for your choice. The grading criteria are:
- Some attempt made
- Developing but significantly deficient
- Slightly deficient
- Meets requirements
- Exceeds requirements