# Day 18: Exercise Solutions Here are our solutions for the day 18 exercises in the 30 Days of Python series. Make sure you try the exercises yourself before checking out the solutions!

### §1) Import the `fractions` module and create a `Fraction` from the float `2.25`.

First things first, we need to import the `fractions` module. I'm just going to use a regular import in this case:

``import fractions``

If we look at the documentation for the `fractions` module, we can see that we can create a `Fraction` in many different ways.

Right at the top of the relevant documentation we have this signature that describes the various ways we can create a `Fraction`. There are also a tonne of examples a little further down.

The signature looks like this:

``````fractions.Fraction(numerator=0,  denominator=1)
fractions.Fraction(other_fraction)
fractions.Fraction(float)
fractions.Fraction(decimal)
fractions.Fraction(string)``````

As we can see, one of the options is to just pass in a single float value, and `Fraction` will take care of the rest.

``````import fractions

fraction = fractions.Fraction(2.25)``````

If we print `fraction` we now get something like this:

``9/4``

### §2) Import only the `fsum` function from the `math` module and use it to find the sum of the following series of floats.

``numbers = [1.43, 1.1, 5.32, 87.032, 0.2, 23.4]``

For this exercise we need to do a specific import, so we're going to be using the `from ... import ...` syntax. In this instance we want to import from the `math` module, and what we want to import is `fsum`.

``from math import fsum``

Now that we have the `fsum` function, we can just pass our list of numbers to it, since `fsum`, like `sum`, accepts an iterable.

``````from math import fsum

numbers = [1.43, 1.1, 5.32, 87.032, 0.2, 23.4]
fsum(numbers)``````

You can print the result if you want verify that everything worked. If my math is right, answer should be `118.482`.

### §3) Import the `random` module using an alias, and find a random number between `1` and `100` using the `randint` function.

Once again, we can find all the information we need in the documentation. As we can see from the function signature, `randint` takes in two parameters, `a` and `b`, which determine the range of numbers it can choose from.

One very important thing we need to pay attention to is here:

Return a random integer N such that a <= N <= b.

Note that `N` can be equal to `b`, so that means the stop value is inclusive, unlike with `range`.

Now that we know how to use `randint`, we need to import `random` using an alias. I'm going to use `rand` in this case.

``import random as rand``

Now we can call `randint` using `rand.randint()`.

``````import random as rand

print(rand.randint(1, 100))``````

### §4) Use the `randint` function from the exercise above to create a new version of the guessing game we made in day 8. This time the program should generate a random number, and you should tell the user whether their guess was too high, or too low, until they get the right number.

I'm going to cheat a little bit and just copy across the solution I wrote from day 8.

``````target_number = 47

guess = int(input("Enter a number: "))

while guess != target_number
print("Wrong!")
guess = int(input("Enter a number: "))

print("You guessed correctly!")``````

The only real change we need to make here is to change `target_number` from a static integer to a dynamic value generated by `randint`.

This is a simple modification that makes the game a great deal more fun!

``````import random as rand

target_number = rand.randint(1, 100)

guess = int(input("Enter a number: "))

while guess != target_number
print("Wrong!")
guess = int(input("Enter a number: "))

print("You guessed correctly!")``````

# Start your coding career today with one complete course

## Join 56,000 students jumping from beginner to pro

4.6 (14,471) 