Your code returns 7 which is the total count of all the underscores minus the extra underscore in the third to last position. You can fix that by removing the or-test (which short-circuits the tests when a match is found).
Also note there is no need to triple-zip the code or to loop with a stride-of-three.
Here is a cleaned-up version of your original code:
def count():
gap=0
for x,y,z in zip(s1,s2,s3):
if (x == '_'): # these if-stmts don't short-circuit
gap += 1
if (y == '_'):
gap += 1
if (z == '_'):
gap += 1
return gap
There are other ways to do this faster (i.e. the str.count method) but I wanted to show you how to repair and clean-up your original logic. That ought to put you on the right track when you do other analytics.