Lab 6

Rational Class, recursion and testing
  1. A rational number is any number that can be expressed as the quotient or fraction n/d of two integers.

    Write a Python class called Rational. Every Rational object consists of two attributes n and d representing the numerator and denominator.

    Include doc string comment in Rational class. After testing, use pydoc to generate class documentation in HTML format.

  2. In Python we calculate powers using the symbol **. In this question we consider how the Python interpretor may have implemented this: do not use ** in your solution. The mathematical definition of taking a power is np = n*np - 1 for positive integer p. Use this to create a recursive function power(n,p) which calculates np.

  3. A palindrome is a word (or any other sequence of symbols) which reads the same forward and backward, for example ada,abba,level, etc. Write a recursive function isPalindrome(S) which returns a Boolean determining whether the string S is a palindrome. You should make use of argument in main() to test your function.

  4. A Sierpinski Triangle of order 0 is just an equilateral triangle (all sides the same length). An order 1 Sierpinski Triangle is created by 3 smaller triangles coming together so their edges form the single larger one. An order 2 Sierpinski Triangle repeats this process within the 3 smaller triangles. Examples of level 1, 3, and 5 Sierpinski Triangle are shown below.

    LevelOutput
    1
    3
    5

    Using Point class from Lab 3, write Python code to draw the Sierpinski Triangle for a specified order.

  5. By comparing output results of operations using the fractions.Fraction class in Python, write a new tester program to test Rational class in Q1 above and report your testing. Write another tester program to sort a list of Rational objects using Python sorted() and sortAndSearchAPI function in Lab6 folder.

  6. Rewrite the palindrome checker program in Q2 above to use doctest module and docstring to assure the function is correct. Write a tester program using unittest module for testing.

  7. Given currencyAPI in Lab6 tutorial folder, add exception handling to catch errors you find or anticipate e.g. user enters nothing or an invalid currency code. For those errors that should rise to the user, create meaningful error messages. Write a test plan and report your testing.