E-mail Harvester Assignment

From WLCS
Revision as of 10:06, 24 April 2012 by Admin (talk | contribs)

Objectives:

  • Be able to define functions with parameters
  • Be able to call functions with parameters
  • Be able to use while loops
  • Be able to traverse a string
  • Be able to manipulate strings

Directions:

  1. Write a function named findAtSymbol(s) that takes a single parameter, s, which is a string.
    • The function should traverse the string with a loop and use an if statement check if any character s[x] matches the "@" symbol. Your function should then return the index of the "@" symbol
  2. Write a more generalized find() function named find(s, ch, index)
    • This time, the function should walk through s with a loop and look to see if any s[x] matches ch
    • The loop counter should start the search at index
    • return the location of the character ch in string s when there is a match
  3. Create another find() function that does the same thing as the above find function, but instead of searching forwards, it searches backwards.
    • Name the function findBackwards(s, ch, index)
    • findBackwards() should also return an index
  4. Create a new function named harvestEmail(s) where the user's sentence is passed in as s. Inside harvestEmail(s), use the functions that you defined above to isolate the e-mail address
    1. First, find the @-symbol using findAtSymbol() and storing the result in a variable.
    2. Find the space before the @-symbol using findBackwards() with the index of the AT-symbol. Store its result in a variable.
    3. Lastly, find the space after the @-symbol by using the find() function and storing the result in a variable.
    4. You should then return the slice of the string that contains the e-mail address .

Testing:

# You should test harvestEmail() with the following doctest

def harvestEmail(s):
    """
      >>> harvestEmail("here is an email@address.com to test")
      'email@address.com'
      >>> harvestEmail("test this@this.com out")
      'this@this.com'
      >>> harvestEmail("is your e-mail a@a.com even in this sentence?")
      'a@a.com'
    """
 
if __name__ == '__main__':
    import doctest
    doctest.testmod()

Rubric

Criteria Pts
'find' works perfectly 2
'findAtSymbol' works perfectly 2
'findBackwards' works perfectly 2
'harvestEmail' return correct string 2
Handles emails at the start or end of the string (e.g. no spaces before or after). 2
Bonus: Good variable names +2
Bonus: Simple, clear code +2
Maximum points 10 + 4