Hola!
def countA(word):
cont=0
total=0
for letra in word[cont]:
if letra=='a':
total=total+1
cont=cont+1
elif letra!='a':
cont=cont+1
return total
A primera vista tiene unas cuantas cosas innecesarias:
->la variable cont, no veo que utilidad tiene
->el "elif", tampoco es necesario, con el if basta(a menos que quieras contar las letras que no son a tambien
->y el "error", por el que no te funcionan los codigos como deberian, es el for. Así como lo pones, solo recorre la primera letra de "word", mira:
Esto es lo que pasa con el for:
>>> word = "alala"
>>> cont = 0
>>>
>>> for x in word[cont]:
print "x: ", x, "\ncont: ", cont
cont += 1
x: l
cont: 1
Y esto es lo que devuelve la primera funcion que pusiste(la segunda funciona igual si no me equivoco)
>>> countA("ala") #como la primera letra es "a", devuelve 1, pero ignora al resto de las letras
1
>>> countA("la") #como la primera letra no es "a", devuelve 0
0
>>> countA("banana") #lo mismo de arriba
0
>>> countA("anana") #como la primera letra es "a", devuelve 1, pero ignora al resto de las letras
1
>>>
En definitiva, debes cambiar esto:
for letra in word[cont]:
a esto:
for letra in word:
y ya te funcionaría sin problemas(aunque el elif y cont seguirian estando de más
)
Saludos!
EDITO: mejor ve lo que dijo 0x5d, que lo explico de forma mas clara y concisa