Ei, Willian! Tudo bem? 
Você fez um ótimo trabalho ao controlar o estoque com if e while, parabéns! A lógica está clara e funcional, com uma validação interessante para o limite de livros. Uma observação: a variável restante é calculada antes da atualização do estoque, então pode mostrar um valor desatualizado se usada após a venda.
Uma sugestão é calcular o restante dentro do loop, garantindo que ele sempre reflita o valor mais atual. Veja este exemplo:
estoque = 5
quantidade = int(input('Quantos livros deseja comprar? '))
if quantidade > 0 and quantidade <= estoque:
    while quantidade <= estoque and estoque > 0:
        estoque -= quantidade
        print(f"Venda realizada! Estoque restante {estoque}.")
        break
else:
    print('Quantidade invalida!')
if estoque == 0:
    print('Estoque esgotado!')
Esse código usa estoque atualizado direto no print. Isso evita inconsistência na mensagem final. Faça os ajustes necessários e observe se funciona como esperado.
   Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
   Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!