I subscribe to a blog called Quora.  You can set filters on what sort of questions are presented. I’ve set them to show math, physics, and computer science posts.

Today I saw a post that asked if someone with an advanced degree in computer science could fail the “Fizz Buzz Test“.

I had no idea what this test was so I did a Google Search on the words “fizzbuzz test” and came up with a wikipedia page dedicated to the game which also mentions the test (here is the page).

After reading the article section named “Other Uses” and messing around with a python script today I can safely say I do fall into the category of someone who has used this game as a “Software Kata

Here is what I’ve done so far.  And, in my defense, I did start out with a VERY SIMPLE version of this game and it sort of “grew-like-topsy” to what you see below.

I’ve used the WordPress tags to embed the code below.  So this blog post not only talks about the Fizz Buzz Test but also gives a demonstration of how source code embedding works on WordPress.

```# Fizz Buzz (beep) Script
import os

def sayIt( anIndex, aCount, phrase):
indexString = "The "+str(aCount)
if aCount >= 11 and aCount <= 20:
indexString += 'th'
elif aCount % 10 == 1:
indexString += 'st'
elif aCount % 10 == 2:
indexString += 'nd'
elif aCount % 10 == 3:
indexString += 'rd'
else:
indexString += 'th'
indexString += ' element is '+str(anIndex)+' and we say '+phrase
os.system("say " +indexString)

def findPhrase( index, fizzNumber, buzzNumber, beepNumber ):
newNumber = index
thePhrase = ''
if fizzNumber != 0:
while newNumber % fizzNumber == 0:
thePhrase += 'FIZZ '
newNumber = newNumber / fizzNumber
if buzzNumber != 0:
while newNumber % buzzNumber == 0:
thePhrase += 'BUZZ '
newNumber = newNumber / buzzNumber
if beepNumber != 0:
while newNumber % beepNumber == 0:
thePhrase += 'BEEP '
newNumber = newNumber / beepNumber
return thePhrase

def fizzBuzzBeep(maxCount, fizzNumber, buzzNumber, beepNumber):
count = 0
index = 1
while (count<maxCount):
aPhrase = findPhrase( index, fizzNumber, buzzNumber, beepNumber )
if len(aPhrase) != 0:
count +=1
print("{0:3d} - {1:3d} {2}".format(count, index, aPhrase))
sayIt( index, count, aPhrase)
index +=1

if __name__ == '__main__':
fizzBuzzBeep(100, 3, 5, 7)

```