PYTHON - Calculos de ecuaciones con while.

Iniciado por Meta, 14 Octubre 2010, 16:34 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Muy buenas gente:

Intentando calcular el ejercicio de abajo lo he hecho a mi manera y se que no tiene nada que ver y tampoco funciona. Hay que hacerlo con While.



Código (python) [Seleccionar]
n = float(raw_input('Añade n: ')
m = float(raw_input('Añade m: ')

f = (n / ((n - m) * m))
print f


CitarIntroduce un valor n: 15
Introduce un valor m: 10
0.3

¿Cómo voy hacer esto con while?
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Novlucker

#1
Lo que pasa es que los simbolos de exclamación no están porque si nomás, significan factorial :xD
n! significa que por ejemplo.

n = 5
n! = 5! = 5 x 4 x 3 x 2 x 1 = 120

n = 8
n! = 8! = 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 = 40320


Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

flony

#2
y guarda que no se aplica regla de distribucion primero si o si se resta se saca su factorial y se multiplica por el m
el factorial ya lo expliacron http://foro.elhacker.net/scripting/entender_lo_que_hay_que_hacer_en_este_ejercicio-t307763.0.html
si un problema no tiene solucion entonces no es un problema...es algo inevitable

Meta

Buscando por Internet se puede hacer así también, pero no lo pide el ejercicio.

Código (python) [Seleccionar]
from math import factorial
print factorial(8)

Citar40320
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

[L]ord [R]NA

Tambien puedes hacerlo por recursividad en una funcion.

Meta

Código (python) [Seleccionar]
n = float(raw_input('Introduce un valor n: '))
m = float(raw_input('Introduce un valor m: '))

sumatorio = 1
i = 0
while i < n:
    i += 1
    sumatorio *= i
    (n / ((n - m) * m))
print sumatorio


CitarIntroduce un valor n: 15
Introduce un valor m: 10
1307674368000

Pensé que es como hice arriba y no. ;)

Ya con la explicación que me dieron arriba lo voy hacer. Voy a intentarlo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

Podría ser así,
Código (python) [Seleccionar]
#
# @Function: factorial of a number
#

def _factorial(sNumber):
   sSum = 1
   sCont = 0

   while sCont < sNumber:
       sCont += 1
       sSum *= sCont

   return sSum

print _factorial(4)


WTF! No entiendo esta linea,
Código (python,9) [Seleccionar]
n = float(raw_input('Introduce un valor n: '))
m = float(raw_input('Introduce un valor m: '))

sumatorio = 1
i = 0
while i < n:
   i += 1
   sumatorio *= i
   (n / ((n - m) * m))
print sumatorio
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Meta

#7
Lo he intentado hacer así y nada.

Código (python) [Seleccionar]
n = float(raw_input('Introduce un valor n: '))
m = float(raw_input('Introduce un valor m: '))

sumatorio = 1
i = 0
while i < n:
    i += 1
    sumatorio *= i
#print sumatorio

sumatorio2 = 1
e = 0
while e < m:
    e += 1
    sumatorio2 *= e
#print sumatorio2

var = (sumatorio / ((n - m) * sumatorio2))
print var


Citar
Introduce un valor n: 15
Introduce un valor m: 10
72072.0

La línea que dices es la que muestra arriba en el primer post pero en una sóla línea.

Supuestamente como resultado debe dar 3003 si incluye n = 15 y m = 10 al introducir datos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

.:WindHack:.

#8
Pues la única manera que se me ocurre es usando una función.

Código (python) [Seleccionar]
def fact(iNum):
   i = 1
   f = 1
   while (i < iNum):
       i += 1
       f *= i
   return f

n = input('n: ')
m = input('m: ')

c = fact(n)/(fact(n - m)*fact(m))
print c





En tu código Meta lo que falta organizar y obtener es (n - m)! para que te dé el resultado correcto.

Follow me on Twitter: @windhack | Visit my website: www.daw-labs.com

"The only thing they can't take from us are our minds."

ace332

#9
Bueno yo recuerdo que ese valor también se puede calcular de la siguiente manera:



Usando un while sale:
Código (python) [Seleccionar]

n=15
m=10
i=1
d=1
D=n
while(i<m):
 D*=n-i
 d*=i+1
 i=i+1
C=D/d

print(C)

Edit: Se asignaron valores para m y n