Ambas as soluções calculam o fatorial de um número inteiro, mas a sua solução tem um pequeno problema que pode causar resultados incorretos. Vou explicar a diferença e mostrar como corrigir isso.
Sua Solução:
num = int(input('Insira um número: '))
for i in range(1, num):
num *= i
print(num)
Nessa solução, você está usando um loop for para iterar de 1 até num - 1 (ou seja, até um número antes do número inserido). Em cada iteração, você multiplica num pelo valor de i. No entanto, o problema é que você está alterando o valor de num durante o loop, o que pode resultar em um cálculo incorreto.
Por exemplo, se o usuário inserir 5, na primeira iteração, você multiplicará num por 1, resultando em 5. Mas, na segunda iteração, você multiplicará o valor alterado 5 por 2, obtendo 10 ao invés do valor correto, que seria 5! = 120.
A Solução Correta:
num = int(input('Informe um número inteiro: '))
fatorial = 1
i = num
while i > 0:
fatorial *= i
i -= 1
print(f'Fatorial de {num} é {fatorial}')
Nessa solução, a instrutora utiliza um loop while que começa do número inserido (num) e vai diminuindo i em cada iteração até chegar a 1. Isso garante que o valor de num permaneça constante durante todo o cálculo do fatorial.
Portanto, a solução da instrutora é mais correta em termos de lógica. Certifique-se de que a sua solução seja ajustada para não alterar o valor original de num durante o cálculo do fatorial.