Edit: Same with more explanation due to down votes
Considering your approach with a global variable count
(global, because it is not within the function), you would need to do two adaptions:
- You need to make
count
available locally with the keyword global
- Since you use a global variable, you do not need to return it because it is available anyway
Code:
count = 0
def fizz_count(x):
global count # make count available for writing in the local scope
for string in x:
if string == 'fizz':
count = count + 1
else:
count = count
Now actually using a global variable especially for such kind of tasks is not recommended, because it takes more time to load, you have to take care of the current state and stuff like that, so you rather'd introduce a local variable and pass it via the return statement as you did.
- Put
count = 0
into function
Code
# we put count = 0 into the function
def fizz_count(x):
count = 0 # right here
for string in x:
if string == 'fizz':
count = count + 1
else:
count = count
return count
Now a new count
will be initialized to zero within the function.
Now there are two more things here:
- the
else
statement
- and the increment
Since the else
statement is outside the loop it will be only executed if the if
condition was never True
during the loop. That has some use cases. But you'd put it in the loop usually. However, in your case it basically does not change anything, thats why it can be removed completely.
Well and the second point is that the increment can be written as count += 1
which is considered more readable, because it is less clumsy and the second count
is merged into the +=
Therefore finally the function could be written like so
def fizz_count(x):
count = 0
for string in x:
if string == 'fizz':
count += 1
return count
Check also the reasonable solutions of the other answers