Hello Coderz, Welcome to codingbroz where we make programming easy and fun for you.
Today, I am going to discuss an amazing job interview problem in python. This is an important problem to know if you’re preparing for any coding interview no matter which position.
What is FizzBuzz ?
FizzBuzz is a very simple programming problem which is asked in software developer job interviews to determine whether the candidate knows to write code or not.
Now, you must be thinking if it is an easy problem then why is it asked in an interview ?
The answer to that is, Though the FizzBuzz problem is easy but how you approach and solve the problem makes all the difference. Interviewer determines whether the candidate is a good coder or not !
Let’s see what is the FizzBuzz problem :
Write a program to print numbers from 1 to 100. But for multiples of 3 print Fizz instead and for the multiple of 5 print Buzz and for the numbers multiple of both 3 and 5 print FizzBuzz.
So, let’s see the codes to solve the FizzBuzz program in python.
Naive Solution : FizzBuzz in python
for i in range(1,101) : if i % 15 == 0 : print("FizzBuzz") elif i % 3 == 0 : print("Fizz") elif i % 5 == 0 : print("Buzz") else : print(i)
This program gives the output :
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz …………………………. Buzz Fizz 97 98 Fizz Buzz
So, this is the naive solution every programmer will give. But the problem with this code is that
i % 15 == 0 is treated same as i % 3 == 0 && i % 5 == 0
Which means we are comparing the number i with 3 or 5 two times in the above code.
Now, lets see what a good coder will code.
Good Solution : FizzBuzz in Python
for i in range(1,101) : ans = "" if i%3==0 : ans+="Fizz" if i%5==0 : ans+="Buzz" if ans == "" : print(i) else : print(ans)
So, by writing this code we can avoid checking the divisibility of 3 and 5 two times.
But, there is one more good approach which only few programmers implement which is the better approach.
As the above 2 solutions used the use of modulo % operator to check the visibility, but the use of modulo % operator is very expensive as compared to any other operator like +,-,* e.t.c.
So, let’s see how to avoid using modulo % operator and what does a better programmer implement to solve the fizzbuzz problem.
Better Solution : FizzBuzz in python
c3 = 0 c5 = 0 for i in range(1,101) : c3+=1 c5+=1 ans="" if c3 == 3 : ans+="Fizz" c3 = 0 if c5 == 5 : ans+="Buzz" c5 = 0 if ans == "" : print(i) else : print(ans)
This code is the better way to solve the FizzBuzz problem without the use of modulo % operator as the use of % is an expensive approach.
Now, let’s see how to solve the fizzbuzz program in just one line using python.
FizzBuzz program in single line using python
for i in range(1, 101) : print("Fizz"*(i%3<1)+(i%5<1)*"Buzz" or i)
Using the above code in python you can solve the fizzbuzz problem in a single line !