I found your problems:
fi = ["fizz","cat","fizz"]
This line is conflicting with the variable that
fizz_count uses. This gives
fizz_count a variable to count "fizz" with, so it won't use whatever else would be given to it. Take out that line.
return count on line 7 need to be pushed back to be in line with
for x in fi on line 4. I don't know exactly why this is a problem, but my theory is when
return commands are not in line with
For x in y, they are included in the loop and return the incorrect value.