number from python numbers sequence

from - range python 3



cómo multiplicar todos los números en una secuencia(python) (8)

Asumiendo que lo que quería decir es función factorial, simplemente puede usar math.factorial() :

>>> import math >>> math.factorial(10) 3628800

Como si le dijera al programa n=10 , ¿cómo lo haré regresar 10*9*8*7*6*5....1 ?

Pensé en un ciclo de tiempo pero siento que cometí un error en alguna parte porque no resume todos los números de la secuencia.

Mi código actual se ve así

def product(n): i=n a=n-1 while a>0: return i * a b=i * a a=a-1 i=i-1

¿Hay alguna forma mejor de hacerlo sin usar la recursión? Perdón por la pregunta increíblemente para principiantes, pero estoy tratando de enseñarme cómo codificar. ¡Tienes que empezar en algún lado!

¡Gracias!


Bueno, aquí hay otro enfoque Pythonic.

>>> import operator >>> numbers = range(1, 11) >>> numbers [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> reduce(operator.mul, numbers) 3628800


Como aprendiz, debes hacerlo sin utilizar ninguna función incorporada, sino que te ayudará a aprender a programar, en vez de a una herramienta, ya que aprender una herramienta es mucho más fácil si te conviertes en un buen programador. Hay dos formas de hacerlo. He implementado versiones más simples.

Usando recursión:

def product(n): if n== 1: return 1 return n * product(n-1)

Usando Simple Loop:

def product(n): res = 1 while n>1: res = res * n n = n - 1 return res


Como intenta aprender a codificar, no le daré una solución total, pero en su lugar le daré algunos consejos:

  • Tenga un bucle for que vaya de 1 a n (usando el range(1, n+1) ) en lugar de su while -loop. Esto generará los valores que desea multiplicar e iterar la cantidad correcta de veces (lo que puede ser un poco complicado con bucles while a veces).

  • Tener una variable llamada product para almacenar el resultado de las multiplicaciones cada vez a través del ciclo.

  • Inicialice el product antes de ingresar al -loop. Una vez dentro, solo actualizarás el valor del product .

  • Una vez que haya terminado con el ciclo, puede usar la declaración de retorno para devolver el valor del product .

  • Finalmente, para propósitos de prueba, puede comenzar con un valor pequeño de n , como 4, e imprimir los valores que está computando dentro del ciclo para verificar cómo está funcionando su código.

Hay formas más breves y pitónicas para hacer esto, pero esto usa la estructura de código que ya ha configurado. Y, por supuesto, de forma recursiva y también lo mencionas.

Una vez que domine los conceptos básicos, apreciará las formas más idiomáticas de escribir esto, o llamando a las funciones apropiadas que hacen esto por usted.


Estás tratando de encontrar el factorial de un número n, esencialmente. Para encontrar el factorial de un número, hay 2 métodos

  1. Usando una estructura de bucle
  2. Usando recursión (como has mencionado)

Como un nuevo programador, sería mejor que tuviera una estructura de bucle simple que se ejecuta de 1 a n y pone el valor multiplicado en cada iteración en una variable. Esa variable es tu respuesta. Pero también sepa que la recursión también funcionará y hará que el código se vea elegante. Feliz programacion!


Esto se llama factorial . 10! es equivalente a 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 .

def factorial(n): product = 1 while n > 0: product *= n n -= 1 return product

Por cierto, en la práctica, solo use math.factorial .


Otra forma de hacerlo es usar scipy.product .

>>> import scipy >>> scipy.product(xrange(1,11)) 3628800


def factorial(n): if n <= 1: return 1 return n * factorial(n-1)

Siempre pienso en factorial como el ejemplo por excelencia en el aprendizaje de la recursión ...