We start with the Fizz Buzz programming challenge. Your task is to write a program that prints numbers from S to E (inclusive of both S and E). But for multiples of 3, print
Fizz instead of that number and for multiples of 5, print
Buzz. For numbers which are both multiples of 3 and 5, print
S S+1 S+2 ... E-1 E
Where each line contains either a number,
FizzBuzz, as per the task statement.
8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16
The first thing to do when attempting to solve any computing contest problem is to think of a solution.For this problem, all we have to do is to simulate the process. The problem statement already tells us the behavior we need to program - what remains is for us to translate it into code.## Printing and Loops
First, let us print all the numbers from S=8 to E=16 (inclusive). For now, we will not worry about how to print
FizzBuzz.So how do we even print a number? To print anything in Python we use the
print() function. The
print() function prints whatever is enclosed between the parenthesis. We use the newer version of Python, namely Python 3. In Python 2,
We have embedded some Python 3 code using an online interpreter called repl.it. Try clicking the “run” button to see what the code prints. After that, you can click “edit on repl.it” to play around with the code. We highly encourage you to do so!
You can print strings like
Hello World by putting them in between quotes.
Note: You may have noticed that when running the above code, the last line of output is
None. You can safely ignore this. (If you’d like to know, it is the result of the repl.it interpreter trying to print out the return value of the program, which in this case is
None.) You can also print numbers.
Now, we have a way to print all the numbers from 8 to 16.
What’s wrong with this? Firstly, it is incredibly tedious. But more importantly this method doesn’t work if we’re trying to print a range that is variable, with different values of S and E. (A common mistake beginners make is forgetting that they are not trying to solve a specific instance of a problem, but the general problem.) A better way to print all the numbers from 8 to 16 would be to use for loops.
range() function, when given two numbers as input, results in a range that begins with the first number and ends right before the second number. For example,
range(8,17) corresponds to the numbers from 8 to 16 (inclusive) because 16 is right before 17. Hence, the code above is basically saying “for each number in this range, print it out”.Now, try printing all numbers given S and E values. Go ahead, click edit and try it out yourself.
#sign starts a comment line. This is only meant for humans to read, so that we can understand the code better. The computer interpreter will ignore it. For more info, see Python Basic Syntax.
Our Solution: https://repl.it/BGgN/1. Note that this is our code, which is one of many valid codes. Your code might be valid too even if it is written differently. For instance, here is another equally valid way to write the code. Check what your code prints v.s. what our code prints, and make sure it is the same. Understand the differences in coding style, if any.
Now, let us try to make our program print
FizzBuzz when appropriate. To do so, we can use if/else statements. Here is some simple code checking if
n is greater than 10. If it is, then the block of code which is part of the indented if-block will execute.
We can also get the code to do something in the case that
n is not greater than 10.
We can also add additional branching by using the
To check if a number is divisible by some other number, we can use the
a % b returns the remainder when
a is divided by
Now you know enough to deal with the
Buzz. But what about the
FizzBuzz case? To check that a number is both divisible by 3 and 5, we can use the
Now, try printing all numbers given S and E values. Replace all numbers divisible by 3 with
Fizz, all numbers divisible by 5 with
Buzz, and all numbers divisible by both 3 and 5 with
FizzBuzz. Once again, click edit and try it out yourself.
Here is iur solution: https://repl.it/BGgN/3
All we are missing now is some way to get input from the keyboad for
E. To get input, use the
input() function. The
input() reads input from the keyboard, and returns the value of the input. To store the value, just assign it to a variable, eg.
x = input(). To be able to type in input, please open the following code on the repl.it site by clicking “edit on repl.it” before running it.
input() reads keyboard input as a string by default. For our purposes, we’d like to read integers. To do so, we can call the
int() method, which will typecast the input as an integer. The
type() function can tell us what the type of a variable is.
Now, you can solve the FizzBuzz task in its entirety.
Our Solution: https://repl.it/BGgN/5
Now, you should have enough programming knowledge to solve Divisibilities on our practice site. Go ahead and try to solve it!