I recently began python and I tried the FizzBuzz test. I came up with this:
count = 0
while count <= 100:
if (count % 3) == 0:
print "Fizz"
count = count + 1
elif (count % 5) == 0:
print "Buzz"
count = count + 1
elif (count % 5) and (count % 3):
print "FizzBuzz"
count = count + 1
else:
print count
count = count + 1
It outputs no numbers :
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
Buzz
Fizz
FizzBuzz
FizzBuzz
Fizz
Buzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
Buzz
Fizz
FizzBuzz
FizzBuzz
Fizz
Buzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
Buzz
Fizz
FizzBuzz
FizzBuzz
Fizz
Buzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
Buzz
Fizz
FizzBuzz
FizzBuzz
Fizz
Buzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
Buzz
Fizz
FizzBuzz
FizzBuzz
Fizz
Buzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
Buzz
Fizz
FizzBuzz
FizzBuzz
Fizz
Buzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
FizzBuzz
Fizz
FizzBuzz
Buzz
Fizz
FizzBuzz
FizzBuzz
Fizz
Buzz
This is not the correct output. How could I clean up the program?
Think about the order in which these statements occur,
elif (count % 5) and (count % 3):
this line of code will never execute, as either
if (count % 3) == 0:
or
elif (count % 5) == 0:
will execute first if those conditions are true. In this case you want to check if both of these conditions are true, only then should you check to see if a single condition is true.
Also, the line of code
count = count + 1
appears in every branch of your code, consider placing this somewhere where it will be executed every single time.
However I would choose to use a for loop rather than a while loop,
for x in range(100):
this eliminates the need for an extra count variable.
Another thing to watch out for
elif (count % 5) and (count % 3):
here, you're not checking if the number % 5 is == 0, you're just checking (count % 5). So the expression "if (count % 5)" will result in True if count is not evenly divisible by 5 (check out Truth value testing). The same goes for the other places where you leave out the == comparator
Here's an example of a similar approach to yours.
for count in range(1, 101):
if count % 5 == 0 and count % 3 == 0:
print "FizzBuzz"
elif count % 5 == 0:
print "Buzz"
elif count % 3 == 0 and count % 5 == 0:
print "Fizz"
else:
print count
things to note: