Lab - Haiku lab¶
Background¶
Haiku's are a form of Japanese poetry. They consist of 3 lines of text. The first line of the haiku must contain 5 syllables. The second line must have 7 syllables. Finally, the third line again contains 5 syllables. Here is an example of a valid haiku:
An old silent pond
A frog jumps into the pond—
Splash! Silence again.
by Matsuo Basho
============
Objectives¶
- Practice if-else and conditionals.
- Practice with functions
- Practice using a helper function
- Practice with loops
- More practice with lists
Program the Solution - First Function:¶
Write a program called haiku_checker.py that contains two functions. The first function will be a helper function that is called check_n_syllables. This function must take input of a list of words on a line and an int number of syllables to validate. You may use the pysyllables library to make this easier https://pypi.org/project/pysyllables/](https://pypi.org/project/pysyllables/). You will need to install the pysyllables package through the Thonny package manager. Make sure you also do an import at the top of your file:
from pysyllables import get_syllable_count
You can then use the get_syllable_count(word) function to get the number of syllables in a word. The return value of the function should be as follows:
-
This function should return either a -1 if the total syllables is less than the given number n to validate,
-
0 if the total syllables is equal to the number n,
-
and 1 if the total syllables is greater than n.
Second Function:¶
The second function should be called validate_haiku. It will take a single parameter of a list of lists. The list will contain 3 lines for the haiku. Each line will be a sub list of the words in the line. The function will return a String value.
The return values should follow these rules:
-
It should be set to "Valid haiku." if this is a valid haiku that has a first line with 5 syllables, second line with 7 syllables, and third line with 5 syllables.
-
If it has more or less than 3 lines it should return: "Invalid haiku, not 3 lines.".
-
Otherwise it will return a message with the type of error for each line. For example: if the first line has 7 syllables it would return: "Line 1 too short. "[note the space after the period]. If the second line has 3 syllables it would return "Line 2 too short. ". If the third line is too long it would return: "Line 3 too long. ".
Your program should allow multiple comments, for instance 1 for each line that is wrong. The overall message should be on a single line of output. Do not return an error if a line is valid. Note: You should have a return at the end of each error message and only return one continuous String with all error messages as the final return String.
Submission:¶
Submit your program called haiku_checker.py to https://gradescope.com by tomorrow evening.