Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Você diz porque não tá interrompendo quando as tentativas acabam? O teste de tentativas só é feito quando o teste anterior é falso, ou seja, quando acontece o acerto.
Pra corrigir tem que tirar esse teste da cadeia de testes:
if chute != numero_secreto:
tentativas -= 1
# print('errou')
tipo_de_erro(chute, numero_secreto)
else:
print('venceu')
venceu = False
if tentativas == 0:
print('acabou')
perdeu = FalseOu testar junto:
if chute != numero_secreto and tentativas != 0:
tentativas -= 1
# print('errou')
tipo_de_erro(chute, numero_secreto)
elif chute != numero_secreto and tentativas == 0:
print('acabou')
perdeu = False
else:
print('venceu')
venceu = False