Oi, André!
Provavelmente o problema esteja em você "retornar" alguma coisa antes de realmente ter acabado de fazer tudo o que você precisava. Como exemplo, considere o código abaixo. Ele percorre todos os números entre 1 e n, e devolve True se são encontrados apenas 2 divisores inteiros (1 e n), False caso contrário. Ao invés de "retornar" dentro do laço, apenas o valor parcial do contador de divisores é atualizado:
def primo ( n ):
conta_divisores = 0
candidato=1
while candidato<=n:
if n%candidato == 0:
conta_divisores = conta_divisores+1
candidato = candidato+1
return conta_divisores==2
Veja se é algo desse tipo que você precisaria fazer, talvez com um indicador de passagem booleano.
Marcelo