Já pensou em ir além de apenas aprender Python...e trabalhar com isso?
Leia:
Fatorial na Matemática
O fatorial é uma operação matemática, representada pelo símbolo de exclamação: !A fórmula de fatorial de um número n é:
n! = n * (n-1) * (n-2) * ... * 3 * 2 * 1
Ou seja, o valor de n! (leia-se: n fatorial) é o produto de 1, por 2, por 3, ..., por (n-1) e n.
Por exemplo:
4! = 4 x 3 x 2 x 1 = 24
5! = 5 x 4 x 3 x 2 x 1 = 120 (ou: 5! = 5 x 4! = 5x24 = 120)
E por ai vai.
O fatorial é muito usado em um ramo da Matemática chamado Análise Combinatória. Muito mesmo. Se você fez ensino médio, certamente sabe o que é um fatorial.
Agora, vamos levar isso pro nosso amado Python.
Fatorial com o laço WHILE em Python
Vamos aprender agora como calcular o fatorial de número usando o laço While em Python.Vamos lá, tente o máximo que puder:
Crie um programa em Python que pede um número inteiro ao usuário e calcule seu fatorial.
Vamos pedir um número inteiro e positivo ao usuário, e armazenar na variável numero.
Agora precisamos calcular o produto:
1*2*3*...*(numero-1) * numero
Vamos armazenar esse produto na variável resultado.
Inicialmente, vamos iniciar a variável resultado com 1:
resultado = 1
Agora vamos precisar de um contador, vamos usar a variável count para ir de 1 até numero, a cada iteração do laço WHILE, ela é incrementada.
Então, dentro do laço while, fazemos com que resultado seja multiplicado por count, pois count vai assumir os valores de 1, 2, 3, ..., até numero.
Quando chegar em numero, nosso looping while deve parar.
Logo, o teste condicional do while deve ser: count <= numero , ok?
Veja como ficou nosso script em Python:
numero = int(input("Fatorial de: ") )
resultado=1
count=1
while count <= numero:
resultado *= count
count += 1
print(resultado)
Lembrando que:
- resultado *= count é o mesmo que: resultado = resultado * count
- Já: count += 1 significa: count = count + 1
Calcular fatorial usando laço FOR em Python
A lógica deve ser a mesma. Na verdade, tudo que um laço WHILE faz o FOR faz, e vice-versa."Ué, então pra que criar os dois?"
Porque tem situações que é melhor usar um e situações que é melhor usar outro.
Neste caso, você vai ver que é melhor usar o FOR.
Vamos repetir a ideia: Precisamos fazer várias multiplicações, do número 1 até o valor inserido pelo usuário, numero.
Do intervalo 1 até numero.
Isso te lembra algo? Intervalo?
Sim, range.
Nossa querida, amada função range do Python, que é unha e carne com o laço FOR.
Como queremos um intervalo que vai de 1 até numero, basta usarmos:
range(1, numero+1)
Veja como nosso código fica bem mais enxuto e fodástico usando o laço FOR:
numero = int(input("Fatorial de: ") )
resultado=1
for n in range(1,numero+1):
resultado *= n
print(resultado)
Exercício de Python
Seu professor de Matemática, cansado de ficar fazendo multiplicações para achar o fatorial, te encomendou um script em Python (obviamente pagou, pois você possui um certificado do curso de Python).Porém, ele quer fazer vários e vários cálculos.
Nos exemplos anteriores a gente pede o número uma vez, mostra o fatorial e fecha o script.
Ele não, ele quer um looping infinito, que só acabe quando ele fornecer o número 0 como entrada.
Se garante? Faça aí e poste nos comentários.
nfat = 1
ResponderExcluirwhile nfat != 0:
nfat = int(input('Fatorial de:'))
resul = 1
for i in range(1, nfat + 1):
resul *= i
print(resul)
print('Fim')
fat = 1
Excluirn = int(input())
while(n != 0):
for i in range(1, n+1):
fat *= i
print(fat)
n = int(input())
fat = 1
numero = int(input("Fatorial de: ") )
Excluirresultado=1
count= 1
while 0 <= count <= numero:
resultado *= count
count += 1
if resultado != 1:
print(resultado)
else:
print("fim")
num = 1
Excluirwhile num > 0:
resultado = 1
num = int(input('Digite um numero inteiro: '))
for n in range(1, num+1):
resultado = resultado * n
print(f'O resultado do fatorial {num} é de: {resultado}')
print('Fim de programa')
from termcolor import colored, cprint
ResponderExcluirn = ''
c = 1
while n != 0:
n = int(input(colored('fatorial de: ',color='red')))
if n == 0:
break
for i in range(n,0,-1):
c *= i
cprint(f'{i}{"x" if i > 1 else "=" }','red',end='')
cprint(c,'blue')
cprint('fim','cyan')
#ecoding:utf-8
ResponderExcluirnum= 1
while True:
numero=int(input("fatorial de:"))
resultado= 1
for i in range(1,numero+1):
resultado*= i
print (resultado)
numero = 1
ResponderExcluirwhile numero !=0:
numero = int(input('Fatorial de: '))
resultado = 1
for n in range(1, numero+1):
resultado *= n
print(resultado)
print("final do trabalho!!")
#! /usr/bin/python3
ResponderExcluir#! coding: utf-8
def fatorial(n):
if n <= 1:
return 1
return n * fatorial(n -1)
print(fatorial(5))
Uma forma simples
ResponderExcluirn = int(input("Digite seu número:"))
Excluirfor i in range(1, n):
resultado = (i*n)
n = resultado
print (resultado)
fatorial = 1
ResponderExcluirwhile fatorial != 0 :
fatorial = int(input('Entre com o fatorial: '))
aux = 1
for i in range (1, fatorial+1):
aux *= i
if fatorial != 0:
print(aux)
Usando apenas while e for:
ResponderExcluirres = 1; fat = 1
while fat != 0:
fat = int(input("Insira o fatorial: "))
for val in range(1,fat+1):
res *= val
print(fat,"! =", res)
res = 1
ResponderExcluirnumero = 1
while numero !=0:
numero = int(input('Fatorial de: '))
resultado = 1
for n in range (1, numero+1):
resultado *= n
print(resultado)
print('Fim ')
m=int(input('Digite um Nr para fatorial: '))
ResponderExcluiri=1
count=1
while i<m:
i+=1
count*=i
print(count)
num=int(input('Digite um numero: '))
ResponderExcluirfat=num
while num>1:
num-=1
fat*=num
print("O fatorial eh: ",fat)
fecho = 0
ResponderExcluirwhile fecho < 1:
num = int(input('Fatorial de: '))
fatorial = 1
while num > 1:
fatorial = fatorial * num
num -= 1
if num == 0:
print('Fim do Programa')
break
print(fatorial)
count = int(input("Insira o valor de count: "))
ResponderExcluirwhile count > 0:
print(count)
count += 1
n = int(input("Digite um número inteiro positivo: "))
ResponderExcluirwhile n > 0:
fatorial = 1
while n > 1:
fatorial *=n
n = n-1
print(fatorial)
n = int(input("Digite um número inteiro positivo: "))
def fator(n):
ResponderExcluircont=1
fator=1
while cont<=n:
fator*=cont
cont+=1
return(fator)
n= int(input('digite o numero para saber o fatorial: '))
while n!=0:
resultado = fator(n)
print (' o fatorial de {} é:{}'.format(n, resultado))
if n==0:
print('o programa foi encerrado!')
else:
n=int(input('digite o numero para saber o fatorial: '))
print('o programa foi encerrado!')
Segue o meu código:
ResponderExcluirnum = int(input('Fatorial de: '))
while num >= 1:
res = 1
for n in range(1, num+1):
res *= n
print(res)
num = int(input('Fatorial de: '))
num=1
Excluirwhile num >= 1:
num = int(input('Fatorial de: '))
res = 1
for n in range(1, num+1):
res *= n
print(res)
sem loop
Excluirconsegui dar o loop no fatorial e parar quando a entrada for 0, porém ele sempre soma o resultado anterior + novo.
ResponderExcluirnumero = int(input("Um número inteiro e positivo: "))
resultado = 1
while numero != 0:
for n in range(1, numero+1):
resultado *= n
print(resultado)
numero = int(input("Um número inteiro e positivo: "))
o resultado voce pode colocar dentro do while pra ele ficar sempre resetando o valor pra 1
Excluir------------------------------//----------------------------------
#Requisitando confirmação do usuário
confirm=int(input('Digite 1 para sim e 0 para não: Deseja iniciar? '))
#Estrutura de repetição de confirmação
while(confirm == 1):
#Requisitando valores ao usuário
num=int(input('Digite um número para o fatorial: '))
result=1
#Estrutura de repetição da fatorial
for n in range(1,num+1):
result*=n
#Imprimindo resultado da fatorial
print(result)
confirm=int(input('Digite 1 para continuar e 0 para encerrar: '))
#Imprimindo fim do programa
print('Programa encerrado! Obrigado por utiliza-lo')
Boa noite, como eu deveria fazer, caso eu precise calcular a fatorial de por exemplo 10 números diferentes? E no final
ResponderExcluirapresentar o somatório da fatorial de cada valor lido.
eu fiz soh com o for, okay!?
ResponderExcluirdef fatore_multi():
number = int(input("Qual eh o inteiro a ser fatorado agr, professor? "))
while number != 0:
fator = 1
for i in range(1, number + 1):
fator *= i
print(fator)
number = int(input("Qual eh o inteiro a ser fatorado agr, professor? "))
print("0 nao se fatora, professor. Tenha um bom dia!")
from math import factorial
ResponderExcluirn = int(input('Fatorial de: '))
print(f'{n}! = ', factorial(n))
E se a condição fosse:
ResponderExcluirDado um inteiro positivo N, vc deve escrever um programa para determinar o menor numero k tal que
N = a1! + a2! + . . . + ak!, onde cada ai
, para 1 ≤ i ≤ k, ´e um numero inteiro positivo.
continuar = 'S'
ResponderExcluirwhile 'S' in continuar:
digito = int(input('De qual número você deseja o fatorial -->'))
if 0 > digito or digito > 16:
while True:
print('\033[31mERROR\033[m \nDigite números inteiros e positivos menores que 16')
digito = int(input('De qual número você deseja o fatorial -->'))
if 0 < digito < 16:
break
savepoint = digito
num = digito
while True:
if savepoint > 0:
savepoint -= 1
if savepoint >= 1:
digito *= savepoint
if savepoint == 0:
break
print(f'\033[34m {num} \033[m! = \033[32m {digito} \033[m')
continuar = str(input('\033[33m Deseja continuar? \033[m \n[S] sim [N] não'
'\nSua resposta -->')).upper()
if 'S' not in continuar and 'N' not in continuar:
while True:
print('\033[31m ERROR \033[m \nInsira uma resposta válida')
continuar = str(input('\033[33m Deseja continuar? \033[m \n[S] sim [N] não'
'\nSua resposta -->')).upper()
if 'S' in continuar or 'N' in continuar:
break
if 'S' in continuar:
continue
if 'N' in continuar:
break
print('\033[32mPrograma finalizado com sucesso.')
Deu 33 linhas meu código...
ResponderExcluirComo seria possível visualizar o calculo do fatorial , por exemplo
ResponderExcluir5 x 4 = 20
20 x 3 = 60
60 2 = 120
120 x 1 = 120
Exemplo : sendo o fatorial 5, resultado x fatorial ???
OU
5 x 1 = 5
5 x 2 = 10
10 x 3 = 60
60 x 4 = 120
120 x 1 = 120
???
numero = 1
ResponderExcluirresultado = 1
while numero:
resultado = 1
numero = int (input ("Qual número você quer fatorar?\n"))
for total in range (1,numero + 1):
resultado *= total
print ("Resultado:(",resultado,")")
print ()
Alguém me ajuda? Sou muito iniciante, tenham paciência por favor!
ResponderExcluirTentei fazer, mas meu código meio que desconsidera o primeiro comando, e não sei como fazer pra encerrar quando digitar 0.
Sabe me ajudar?
numero = int(input('Digite um número'))
while numero >= 0:
numero = int(input('Digite um número'))
fatorial = 1
for item in range(1,numero +1):
fatorial = fatorial * item
print(fatorial)
modificando seu apenas um pouco seu código.
Excluirnumero = int(input('Digite um número '))
while True:
if numero == 0:
break
else:
fatorial = 1
for item in range(1,numero +1):
fatorial = fatorial * item
print(fatorial)
numero = int(input('Digite um número '))
numero = int(input('Digite um número'))
ResponderExcluirwhile numero >= 0:
numero = int(input('Digite um número'))
fatorial = 1
for item in range(1,numero +1):
fatorial = fatorial * item
print(fatorial)
existe farias formar de fazer esse exercício, pode usar função, pode usar recursividade ou não, eu vou só modificar um pouco seu código:
ResponderExcluirnumero = int(input('Digite um número '))
while True:
if numero == 0:
break
else:
fatorial = 1
for item in range(1,numero +1):
fatorial = fatorial * item
print(fatorial)
numero = int(input('Digite um número '))
math.factorial()
ResponderExcluirO curso segue um sumário, e neste ponto estamos estudando os laços FOR e WHILE, e o exercício foi fazer usando eles.
ExcluirBasico e completo!
ResponderExcluircont = 1
resultado = 1
num = int(input('Digite o valor que deseja saber o fatorial: '))
while cont < num:
resultado *= cont
cont += 1
print('{}! = {}'.format(num, num), end='')
while num > 1:
num -= 1
print(' x {}'.format(num), end='')
print(' = {}'.format(resultado))
Prompt:
Digite o valor que deseja saber o fatorial: 10
10! = 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 = 362880