Loading [MathJax]/jax/output/HTML-CSS/jax.js

CPSC120A
Fundamentals of Computer Science I

Lab 17

Traversal and Slice

Use the command line to create a new directory called lab17 in your labs directory. Make sure all of the .py files that you create for this activity are in that directory.

Reading Level

Some states require that legal documents not be written above a certain grade level. The Flesch-Kincaid grade level is a numeric score that indicates the minimum grade level in which an average student would be able to understand a text. Writing a function that computes the grade level of text requires being able to count the number of occurrences of certain characters.

Details

In a file called reading_level.py write the function compute_reading_level(text). The function should return the Flesch-Kincaid grade level of the input text. The Flesch-Kincaid grade level equation requires determining the number of syllables in a sentence, which is very difficult for a program to compute without a dictionary. The following equation is an approximation to the Flesch-Kincaid grade level that does not use syllables:

0.39\cdot(W/S)+11.8\cdot((L/3)/W)-15.59

Where W is the total number of words, S is the total number of sentences, and L is the total number of letters. Assume that all sentences end in a period, that all words are separated by a single space, and that all characters that are not a space or period are letters.

Sample Test Cases

Function Parameters Expected Output
'I do not like them Sam I am. I do not like green eggs and ham.' -1.4075
'To be or not to be that is the question. Whether tis nobler in the mind to suffer the slings and arrows of outrageous fortune or to take arms against a sea of troubles and by opposing end them.' 7.445769230769233

Hint

Challenge

The character count function was easy to write because it assumes that the input text only has alphabetic characters, single space characters, and period characters. This isn't very useful because most text does not conform to these restrictions. Modify the function so that it can work for any text. It should:

  1. allow any number of space, tab, or new line characters between words and sentences.
  2. allow sentences to end in a period, question mark, or exclamation point.
  3. ignore all non-alphabetic characters when counting letters.
Pig Latin Translator

Pig Latin is a somewhat silly language parody that is actually entirely English based. It is a simple transposition of letters that gives the effect of a "foreign" sounding language. However, even Thomas Jefferson couldn't resist writing letters to his friends in Pig Latin. The rules for converting an English word to Pig Latin are incredibly easy:

Details

Write a function called convert_to_pig_latin(text) in a file called pig_latin.py. This function takes a string as a parameter, and returns a string which is the pig latin translation of the text parameter.

Make sure your program handles all necessary cases gracefully. What additional test cases should you check?

Sample Test Cases

Function Parameters Expected Output
"scram" am'scray
"immediate" immediateyay

Hint

Challenge

Ofyay ourse'cay, ityay akes'may ittle'lay ense'say o'tay ite'wray ayay ogram'pray o'tay anslate'tray ayay ord'way o'tay ig'pay atin'lay ifyay ityay annot'cay anslate'tray ack'bay e'thay otheryay ay'way! Ite'wray ayay unction'fay onvert_from_pig_latin'cay at'thay akes'tay ayay ord'way alreadyyay inyay ig'pay atin'lay, andyay eturns'ray e'thay Englishyay equivalentyay.

Submission

Please show your source code and run your programs for the instructor or lab assistant. Only a programs that have perfect style and flawless functionality will be accepted as complete.