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
First things first, we need to import the
fractions module. I'm just going to use a regular import in this case:
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:
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
from math import fsum
Now that we have the
fsum function, we can just pass our list of numbers to it, since
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
3) Import the
random module using an alias, and find a random number between
100 using the
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,
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.
N can be equal to
b, so that means the stop value is inclusive, unlike with
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
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
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!")