Oi, Apollo! Como vai?
Gostei da forma como você separou as operações em funções, deixando o código mais organizado e fácil de manter. Notei também que você adicionou tratamento para ValueError e ZeroDivisionError, o que demonstra uma boa preocupação com possíveis erros durante a execução.
Apenas atenção em dois pontos: a variável operador está sendo recebida com float(), mas ela deve ser uma string, e na condição elif operador == '/' você chamou a função subtrair() em vez de dividir().
Uma dica interessante para o futuro é utilizar um dicionário para associar operadores às funções, reduzindo a quantidade de if e elif. Veja este exemplo:
operador = input('Digite a operacao: ')
operacoes = {
'+': soma,
'-': subtrair,
'*': multiplicar,
'/': dividir
}
resultado = operacoes[operador](num1, num2)
Nesse exemplo, o dicionário relaciona cada operador a uma função, tornando o código mais compacto e fácil de expandir.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!