Inicialmente fiquei na dúvida de porquê a variável de nome fatorial é = a 1...
# Pedir o número
num = int(input('Informe um número inteiro: '))
# Inicializar o cálculo
fatorial = 1
# nosso contador inicializa com o número máximo
# e será feita uma contagem decrescente com o operador -=
i = num
while i > 0:
# queremos multiplicar agora o valor do fatorial pelo num
# e todos os números abaixo dele até 1
fatorial *= i
i -= 1
# Imprimir o cálculo do fatorial
print(f'Fatorial de {num} é {fatorial}')
Depois de muito pensar, cheguei na seguinte resolução do exercício:
numero = int(input('Digite aqui um número inteiro: '))
fatorial = 1
while numero > 0:
fatorial *= numero
numero -= 1
print(f'O fatorial é {fatorial}.')
Está correto? Pensei na seguinte lógica:
1º Pedir o número
2º O fatorial começa em 1
3º Enquanto o número fornecido for maior que 0, ele será multiplicado pelo valor estabelecido na variável fatorial
4º Depois da multiplicação, o número fornecido será reduzido, menos 1
Assim... Suponhamos que o número fornecido seja 3. Seguindo os passos já mencionados anteriormente, ficaria:
1º Número fornecido: 3
2º Fatorial começa em 1
3º 3x1 = 3
4º O número fornecido é reduzido menos 1, passando a ser 2.
Repetimos o laço:
1º Número fornecido: passa a 2
2º Variável fatorial agora é 3
3º 2x3 = 6
4º O número fornecido é reduzido menos 1, passando agora a 1.
Repetimos o laço:
1º Número fornecido: passa a 1
2º Fatorial agora é 6
3º 1x6 = 6
4º O número fornecido é reduzido menos 1, passando a ser 0.
Rompe-se o laço de repetição.
Imprime-se a mensagem dizendo que o número fatorial é 6.