Igor,
Qual o comportamento esperado?
Pelo código os seguintes cenários vão acontecer:
inicio do programa variáveis
numeroMaxima = 3;
numeroAtual = 1;
inicio do loop
solicitação de usuário e senha
validação de usuário e senha
1 - Validação OK
1.1 sistema atualiza variável "numeroatual"
numeroatual = numeroMaxima;
1.2 While valida se a condição ainda é valida, no caso ainda é, numeroAtual é 3.
1.3 Não importa o comportamento vai cair no "if(numeroAtual == 3)", pois numeroAtual é igual a 3, e será apresentado as mensagens.
2 - validação -NOK
2.1 Usuário e senha são invalidos e cai no else, "numeroatual" é incrementada para 2.
2.2 Sistema continua a executar e deve apresentar "Cuidado numeros de tentativas acabando".
2.3 Caso validação seja verdadeira, segue comportamento de "Validacao OK".
2.3 Caso validação seja falsa novamente vai apresentar msg de conta bloqueada.
Caso deseje encerar o loop após a validação ok você pode:
1 - Adicionar +1 para validacao do while retornar False e sair do loop
numeroatual = numeroMaxima+1;
2 - Adicionar um break logo após a atualização variável.
numeroatual = numeroMaxima;
break