Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 14 Octubre 2010, 16:34 pm



Título: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 14 Octubre 2010, 16:34 pm
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.

(http://www.subeimagenes.com/img/sin-titulo-1-4472.jpg)

Código
  1. n = float(raw_input('Añade n: ')
  2. m = float(raw_input('Añade m: ')
  3.  
  4. f = (n / ((n - m) * m))
  5. print f

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

¿Cómo voy hacer esto con while?


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Novlucker en 14 Octubre 2010, 16:45 pm
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.

Código:
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


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: flony en 14 Octubre 2010, 16:58 pm
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 (http://foro.elhacker.net/scripting/entender_lo_que_hay_que_hacer_en_este_ejercicio-t307763.0.html)


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 14 Octubre 2010, 17:34 pm
Buscando por Internet se puede hacer así también, pero no lo pide el ejercicio.

Código
  1. from math import factorial
  2. print factorial(8)
Citar
40320


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: [L]ord [R]NA en 14 Octubre 2010, 18:09 pm
Tambien puedes hacerlo por recursividad en una funcion.


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 14 Octubre 2010, 18:39 pm
Código
  1. n = float(raw_input('Introduce un valor n: '))
  2. m = float(raw_input('Introduce un valor m: '))
  3.  
  4. sumatorio = 1
  5. i = 0
  6. while i < n:
  7.    i += 1
  8.    sumatorio *= i
  9.    (n / ((n - m) * m))
  10. print sumatorio

Citar
Introduce 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.


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Shell Root en 14 Octubre 2010, 18:49 pm
Podría ser así,
Código
  1. #
  2. # @Function: factorial of a number
  3. #
  4.  
  5. def _factorial(sNumber):
  6.    sSum = 1
  7.    sCont = 0
  8.  
  9.    while sCont < sNumber:
  10.        sCont += 1
  11.        sSum *= sCont
  12.  
  13.    return sSum
  14.  
  15. print _factorial(4)

WTF! No entiendo esta linea,
Código
  1. n = float(raw_input('Introduce un valor n: '))
  2. m = float(raw_input('Introduce un valor m: '))
  3.  
  4. sumatorio = 1
  5. i = 0
  6. while i < n:
  7.    i += 1
  8.    sumatorio *= i
  9.    (n / ((n - m) * m))
  10. print sumatorio


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 14 Octubre 2010, 19:01 pm
Lo he intentado hacer así y nada.

Código
  1. n = float(raw_input('Introduce un valor n: '))
  2. m = float(raw_input('Introduce un valor m: '))
  3.  
  4. sumatorio = 1
  5. i = 0
  6. while i < n:
  7.    i += 1
  8.    sumatorio *= i
  9. #print sumatorio
  10.  
  11. sumatorio2 = 1
  12. e = 0
  13. while e < m:
  14.    e += 1
  15.    sumatorio2 *= e
  16. #print sumatorio2
  17.  
  18. var = (sumatorio / ((n - m) * sumatorio2))
  19. 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.


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: .:WindHack:. en 14 Octubre 2010, 20:59 pm
Pues la única manera que se me ocurre es usando una función.

Código
  1. def fact(iNum):
  2.    i = 1
  3.    f = 1
  4.    while (i < iNum):
  5.        i += 1
  6.        f *= i
  7.    return f
  8.  
  9. n = input('n: ')
  10. m = input('m: ')
  11.  
  12. c = fact(n)/(fact(n - m)*fact(m))
  13. print c



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


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: ace332 en 14 Octubre 2010, 22:58 pm
Bueno yo recuerdo que ese valor también se puede calcular de la siguiente manera:

(http://s2.subirimagenes.com/otros/previo/thump_5359053combina.jpg)

Usando un while sale:
Código
  1. n=15
  2. m=10
  3. i=1
  4. d=1
  5. D=n
  6. while(i<m):
  7.  D*=n-i
  8.  d*=i+1
  9.  i=i+1
  10. C=D/d
  11.  
  12. print(C)
  13.  
Edit: Se asignaron valores para m y n


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 15 Octubre 2010, 00:41 am
Bueno yo recuerdo que ese valor también se puede calcular de la siguiente manera:

(http://s2.subirimagenes.com/otros/previo/thump_5359053combina.jpg)

Usando un while sale:
Código
  1. i=1
  2. d=1
  3. D=n
  4. while(i<m):
  5.  D*=n-i
  6.  d*=i+1
  7.  i=i+1
  8. C=D/d
  9.  
  10. print(C)
  11.  

En tu código me dice:
Citar
Traceback (most recent call last):
  File "/home/acaymo/NetBeansProjects/tema5e1a5/src/tema5e1a5.py", line 55, in <module>
    D = n
NameError: name 'n' is not defined



Lo que estoy haciendo por ahora es este código, algo le falta que no me sale.

Código
  1. n = float(raw_input('Introduce un valor n: '))
  2. m = float(raw_input('Introduce un valor m: '))
  3.  
  4. sumatorio = 1
  5. i = 0
  6. while i < n:
  7.    i += 1
  8.    sumatorio *= i
  9. #print sumatorio
  10.  
  11. sumatorio2 = 1
  12. e = 0
  13. while e < m:
  14.    e += 1
  15.    sumatorio2 *= e
  16. #print sumatorio2
  17.  
  18. sumatorio3 = 1
  19. u = 0
  20. while u <= (n - m):
  21.    u += 1
  22.    sumatorio3 *= u
  23. #print sumatorio3
  24.  
  25. nm =  (n / (n - m) * m)
  26.  
  27. print nm

Debe dar como resultado 3003 y me da 30.0.

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


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: ace332 en 15 Octubre 2010, 01:06 am
Citar
En tu código me dice:

Citar
Traceback (most recent call last):
  File "/home/acaymo/NetBeansProjects/tema5e1a5/src/tema5e1a5.py", line 55, in <module>
    D = n
NameError: name 'n' is not defined

Es que habia que completar el código.. ;D
Mas arriba se tenia que dar valores a n y a m:

Código
  1. n=15
  2. m=10
  3. # lo demás va aqui
  4.  
PD: Edite el código de mi anterior post para que no salga ese error


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 15 Octubre 2010, 01:10 am
Ahora si que funciona y me estaba complicando la vida con un código muy largo. A pesar de ello, quiero hacerlo a mi manera chapuza, así aprendo, a base de palos. ;)

Muchas gracias por tu código. DEja ver si me sale a mi manera.


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: .:WindHack:. en 15 Octubre 2010, 01:30 am
Ahora si que funciona y me estaba complicando la vida con un código muy largo. A pesar de ello, quiero hacerlo a mi manera chapuza, así aprendo, a base de palos. ;)

Muchas gracias por tu código. DEja ver si me sale a mi manera.

Claro!, recuerda que esa es la manera más interesante de aprender...A fin de cuentas, se aprende poco a poco y con el paso del tiempo se adquiere la experiencia necesaria.


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 15 Octubre 2010, 01:44 am
Buenas:

(http://www.subeimagenes.com/img/sin-titulo-1-4472.jpg)

Fijándome bien en la parte (n - m)!. Debo restar primero (15 - 10)! cuyo resultado es 5. A partir de ahí su función es esta.

(n - m)! = 5 = 5 x 4 x 3 x 2 x 1 = 120.

Hasta aquí todo bien cuando da supuestamente 120 como si si fuera 120!. Aunque lo sustituya en la ecuación completa no me funciona.

Saludo.


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Shell Root en 15 Octubre 2010, 01:48 am
Cómo?


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 15 Octubre 2010, 01:54 am
El resultado supuestamente debo sacarlo de while.

Código
  1. sumatorio3 = 1
  2. u = 0
  3. while u <= (n - m):
  4.    u += 1
  5.    sumatorio3 *= u
  6. #print sumatorio3

Debo lograr aque su resultado final de programa sea 3003 si introduces n = 15 y m = a 10. Estoy haciendo pruebas pero aún no logro hacerlo.


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: ace332 en 15 Octubre 2010, 02:44 am
Ahora si que funciona y me estaba complicando la vida con un código muy largo. A pesar de ello, quiero hacerlo a mi manera chapuza, así aprendo, a base de palos. ;)

Muchas gracias por tu código. DEja ver si me sale a mi manera.

Me parece excelente la idea de buscar resolver los problemas por uno mismo, asi se gana experiencia programando

Ahora bien, me tomaré la libertad de recomendarte una técnica que le enseñan a uno en los cursos de programación y algoritmica:

Primero resuelve el problema en papel dandote varios ejemplos. Por ejemplo, en este caso tendrias que calcular "a mano" el valor de C (número de combinaciones) para distintos pares de valores de m y n:

a) para n=15, m=10;  C=3003
b) para n=5, m=1;  C=5
c) para n=8, m=2;  C=28
d) etc...

Luego de resolver varios de estos ejemplos fijate en el método que seguiste para resolverlos (el algoritmo).

Una vez que tienes el algoritmo es fácil codificarlo en el lenguaje que estes usando para programar.

Saludos ;)

PD: Si ya se, casi todos o todos aqui saben eso :¬¬ pero no está demás recordarlo de vez en cuando


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 15 Octubre 2010, 03:06 am
Te entiendo. No logro sacar el 3003 ni a la de 3. Como me cuesta. Y estoy aprendiendo gracias al tutorial (http://marmota.act.uji.es/mtp/pdf/python.pdf) y en especial a ustedes.

Edito:

Pensé que es así:

Código:
nm =  (sumatorio / (sumatorio3 * sumatorio2))

print nm

Resultado 500.

Sigo intentando.


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: hybr1d en 15 Octubre 2010, 04:16 am
Si usaras menos cantidades de variables podrias hacer el codigo de una forma mas rapida... al parecer no eres muy bueno programando, te recomiendo que hagas todo primero en un diagrama de flujo y lo lleves mentalmente y cuando veas que funcione lo pasas a codigo.

Aqui te dejo el codigo para que veas que tal:
Código
  1. n = input('Valor de N: ')
  2. m = input('Valor de M: ')
  3. b = n-m
  4. a = n-1
  5. if n>m:
  6.  while(a>1):
  7.    n*=a
  8.    a-=1
  9.  a=m-1
  10.  while(a>1):
  11.    m*=a
  12.    a-=1
  13.  a=b-1
  14.  while(a>1):
  15.    b*=a
  16.    a-=1
  17. print 'Cantidad de combinaciones: ',n/(b*m)


Título: Re: PYTHON - Calculos de ecuaciones con while.
Publicado por: Meta en 15 Octubre 2010, 04:30 am
Si usaras menos cantidades de variables podrias hacer el codigo de una forma mas rapida... al parecer no eres muy bueno programando, te recomiendo que hagas todo primero en un diagrama de flujo y lo lleves mentalmente y cuando veas que funcione lo pasas a codigo.

Aqui te dejo el codigo para que veas que tal:
Código
  1. n = input('Valor de N: ')
  2. m = input('Valor de M: ')
  3. b = n-m
  4. a = n-1
  5. if n>m:
  6.  while(a>1):
  7.    n*=a
  8.    a-=1
  9.  a=m-1
  10.  while(a>1):
  11.    m*=a
  12.    a-=1
  13.  a=b-1
  14.  while(a>1):
  15.    b*=a
  16.    a-=1
  17. print 'Cantidad de combinaciones: ',n/(b*m)

Gracias. No es que no sea bueno programando, es que no se programar que es peor, sobre todo por mi cuenta. Claro que estoy guardando los .py que estoy arpendiendo de lo que hago. Si tuviera un profesor o haciendo un curso me callo. ;)