## 2. The class interface

An instance of the `Rational` class represents a rational number. Mathematically:

A rational number is the ratio of two integers, the numerator and the denominator. The denominator cannot be zero.

In grade-school terms, a rational number is a fraction. Examples: 1/2; 113/355; 0/1 (which has the value zero).

In Python, you will need to import the `rational` module. Within this module, there is a class constructor that is invoked like this:

```Rational(`n`, `d`)
```

where `n` is the numerator and `d` is the denominator.

This constructor returns an instance of the class, that is, an object that represents that specific rational value. Here is a conversational example:

```>>> from rational import *
>>> half = Rational ( 1, 2 )
>>> print half
1/2
>>> twoSevenths = Rational ( 2, 7 )
>>> print twoSevenths * half
1/7
```

The above example shows that (1/2)*(2/7) equals 1/7.

The constructor will reduce values to their lowest terms:

```>>> print Rational ( 50, 100 )
1/2
>>> print Rational ( 113, 355 )
113/355
>>> print Rational ( 2000, 12000 )
1/6
```

Operations allowed on `Rational` instances include:

`r + s`

Sum of two rationals `r` and `s`.

`r - s`

Difference of `r` and `s`.

`r * s`

Product of `r` and `s`.

`r / s`

Quotient of `r` divided by `s`.

`float(r)`

Returns the `float` value closest to the value of `r`.

`str(r)`

Return a representation of `r` as a string of type `str`.

`R.mixed()`

For a `Rational` instance `R`, returns the value as a mixed fraction in string form. Examples: `"17"`, `"1/10"`, ```"3 and 1/7"```.

More examples:

```>>> third=Rational(1,3)
>>> fifth=Rational(1,5)
>>> print third * fifth
1/15
>>> print third + fifth
8/15
>>> print third-fifth
2/15
>>> print fifth/third
3/5
>>> print str(fifth)
1/5
>>> print float(fifth)
0.2
>>> print float(third)
0.333333333333
```

The module also provides one ordinary method named `mixed` that returns a string representing an instance as a mixed fraction. Example:

```>>> badPi = Rational(22,7)