A challenge: FizzBuzz

Day 4 Exercise Solutions

Python Guru with a screen instead of a face, typing on a computer keyboard with an orange background to match the day 4 image.

Here are our solutions for the day 4 exercises in the 30 Days of Python series. Make sure you try the exercises yourself before checking out the solutions!

1) Create a movies list containing a single tuple. The tuple should contain a movie title, the director's name, the release year of the movie, and the movie's budget.

Let's start by making an empty list and assigning it to the name movies. We can do this using a pair of empty square brackets like so:

movies = []

Inside this movies list, we need to add a tuple. Because we're inside a list, we need to remember to use parentheses here to mark our tuple as a single value.

I'm going to use The Room as my starting movie. It doesn't really matter what movie you choose. We just need some data to work with.

movies = [
    ("The Room", "Tommy Wiseau", "2003", "$6,000,000")
]

2) Use the input function to gather information about another movie. You need a title, director's name, release year, and budget.

To make things simple, we're going to use four separate input calls to get the movie information here. We've done this a few times now, so I don't think we need to linger on how to do this.

movies = [
    ("The Room", "Tommy Wiseau", "2003", "$6,000,000")
]

title = input("Title: ")
director = input("Director: ")
year = input("Year of release: ")
budget = input("Budget: ")

3) Create a new tuple from the values you gathered using input. Make sure they're in the same order as the tuple you wrote in the movies list.

All we need to create a tuple is a series of comma separated values. If you want you can wrap these values in parentheses to make it clear that this is a tuple:

movies = [
    ("The Room", "Tommy Wiseau", "2003", "$6,000,000")
]

title = input("Title: ")
director = input("Director: ")
year = input("Year of release: ")
budget = input("Budget: ")

new_movie = title, director, year, budget

I've assigned my new tuple to a variable called new_movie. Just make sure it's something descriptive.

4) Use an f-string to print the movie name and release year by accessing your new movie tuple.

When using an f-string, we can evaluate expressions directly inside another string, as long as we put them inside curly braces. This includes referencing variables, or using subscription expressions to access elements in a collection.

title = input("Title: ")
director = input("Director: ")
year = input("Year of release: ")
budget = input("Budget: ")

new_movie = title, director, year, budget

print(f"{new_movie[0]} ({new_movie[2]})")

Here I've chosen to print my movie data out in the following format:

The Room (2003)

If you want to go for something different, that's totally fine.

Don't forget that the indices for sequences start at 0. If we want the first item we need to access the item at index 0, not index 1.

Because we want the first and third item, we need the items at the indices 0 and 2.

This may trip you up for a little while, but very soon it will become second nature to you.

5) Add the new movie tuple to the movies collection using append.

Since we already created our new_movie variable, which refers to a tuple, this step is fairly straightforward. We just need to call append using the dot syntax, and we need to pass in new_movie when we call the method:

movies = [
    ("The Room", "Tommy Wiseau", "2003", "$6,000,000")
]

title = input("Title: ")
director = input("Director: ")
year = input("Year of release: ")
budget = input("Budget: ")

new_movie = title, director, year, budget

print(f"{new_movie[0]} ({new_movie[2]})")

movies.append(new_movie)

If something is called a method, you're always going to be calling it in this same way in Python. There's something you're calling the method on, then a dot, then the method you want to call, followed by the usual parentheses.

Methods are functionality special to some type. For example, lists have an append method, while strings and tuples don't. print on the other hand is a function, and it's not associated with a given type.

6) Print both movies in the movies collection.

Here we just need to use subscription expressions again to access the items in movies. Don't forget the first item is at index 0!

movies = [
    ("The Room", "Tommy Wiseau", "2003", "$6,000,000")
]

title = input("Title: ")
director = input("Director: ")
year = input("Year of release: ")
budget = input("Budget: ")

new_movie = title, director, year, budget

print(f"{new_movie[0]} ({new_movie[2]})")

movies.append(new_movie)

print(movies[0])
print(movies[1])

7) Remove the first movie from movies. Use any method you like.

We have a lot of options here.

First we could use del like so:

del movies[0]

Alternatively, we could use pop:

movies.pop(0)

pop is a method, so we need to use this dot syntax.

Alternatively we could use the remove method, passing in the item at index 0:

movies.remove(movies[0])

I think del is the cleanest option in this case, so my finished solution looks like this:

movies = [
    ("The Room", "Tommy Wiseau", "2003", "$6,000,000")
]

title = input("Title: ")
director = input("Director: ")
year = input("Year of release: ")
budget = input("Budget: ")

new_movie = title, director, year, budget

print(f"{new_movie[0]} ({new_movie[2]})")

movies.append(new_movie)

print(movies[0])
print(movies[1])

del movies[0]

Hopefully you were able to complete all of these steps. If you're stuck on how something works, remember you can always get in touch with us on our Discord server.