Bruna,
O código tá certinho, fazendo o que tem que ser feito.
Ele verifica no array 'segredos' se o número digitado no input está lá, e se sim ele dá o alerta que acertou e 'break'..para o loop.
O que ocorre é que o loop for é realizado tão rapidamente que dá a impressão que a aplicação não passa por ele até chegar no if que verifica se o 'achou' é false.
Você consegue adicionar um break point no for e rodar o código no modo debug... Assim você verá cada passa do seu código sendo executado de forma individual.
É isto... se voce colocar o número 1 e pedir para verificar... seu loop for faz 5 verificações na lista, comprando o numero 1 com cada posição do array, não vai ser igual, então o bloco abaixo não será executado.
if (input.value == segredos[posicao]) {
alert("Você ACERTOU!");
achou = true;
break;
}
Ele vai sair do loop for e vai cair ainda dentro da função verifica e lá ainda existe um if que será executado. Como o 'achou' ainda será false, o bloco será executado informando que o usuário errou o número.
if (achou == false) {
alert("Você ERROU!");
}
Espero ter ajudado.
Se ficou alguma dúvida, por favor informa.