Python - Ayuda con modificar el resultado de una función.

 
Vista:

Ayuda con modificar el resultado de una función.

Publicado por Someone (2 intervenciones) el 30/11/2018 17:41:00
Buenas tardes, hoy estaba realizando una actividad que el enunciado es el siguiente "Escriba un programa que nos pida un número natural n y muestre por pantalla el resultado de (x+y)^n expandido. Para llevar a cabo la actividad utilice dos funciones, una llamada factorial que calcule el factorial de un número natural y otra, coeficienteBinomial, que calcule el coeficiente binomial."

El ejercicio en si lo tengo hecho pero tengo el problema de no poder modificar el resultado de la función coeficienteBinominal y el resultado me queda así :

Deme el exponente de (a+b)^n 5
(a+b)^5=
1
5
10
10
5
1
1 * a^5 * b^0 +
1
5
10
10
5
1
1 * a^4 * b^1 +
1
5
10
10
5
1
1 * a^3 * b^2 +
1
5
10
10
5
1
1 * a^2 * b^3 +
1
5
10
10
5
1
1 * a^1 * b^4 +
1
5
10
10
5
1
1 * a^0 * b^5 +

Y me tendría que quedar de la siguiente manera:

Deme el exponente de (a+b)^n
> 5
_____________________________

(a+b)^5 =
1 * a^5 * b^0 +
5 * a^4 * b^1 +
10 * a^3 * b^2 +
10 * a^2 * b^3 +
5 * a^1 * b^4 +
1 * a^0 * b^5
_____________________________

Si alguien me pudiese dar una pista para que me salga como es debido se lo agradecería. Y si no , igualmente gracias ^^

Os dejo el codigo aqui:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#DEFINIMOS LA FUNCIÓN MENÚ
 
def menu(opcion): #esta función la utilizaremos como selector de actividad 
	if opcion == 0: #0 es el valor que hace de centinela
		print("Adiós")
		return False
	elif opcion == 1:
		actividad1() #llamamos a la función actividad1
		return True
	else:
		print("Esta actividad no existe")
		return True
 
def factorial(numero):
  if numero<0:
    print("No existe")
    return -1
 
  elif numero==0:
    return 1
 
  else:
    resultado = 1
    for i in range(1,numero+1):
      resultado = i*resultado
    return resultado
#FUNCION COEFICIENTEBINOMINAL#
def coeficienteBinominal(numero):
  for k in range(0,numero+1):
    coeficiente=int(factorial(numero)/(factorial(k)*factorial(numero-k)))
 
    print(coeficiente)
  coeficiente=str(coeficiente)
  return coeficiente
 
#DEFINIMOS LA FUNCIÓN ACTIVIDAD1
 
def actividad1():
  numero=int(input("Deme el exponente de (a+b)^n"))
  print("(a+b)^{0}=".format(numero))
 
 
  for i in range(0,numero+1):
    a=numero-i
 
    print("{0} * a^{1}  *  b^{2} +".format(coeficienteBinominal(numero),a,i ))
 
 
 
repetir = True
while repetir:
	actividad = int(input("Introduzca el número de la actividad (0 para salir)"))
	repetir = menu(actividad)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con modificar el resultado de una función.

Publicado por tincopasan (1082 intervenciones) el 01/12/2018 04:43:07
la verdad que ya me olvide de esto, pero no entiendo tu función coeficiente binomial,anula el print de la línea 32 para que veas el resultado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzer0x
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con modificar el resultado de una función.

Publicado por abzer0x (109 intervenciones) el 01/12/2018 23:07:02
Hola, hice un pequeño cambio en tu código, comparto únicamente las funciones que cambie.

1
2
3
4
5
6
7
8
9
10
11
def coeficienteBinominal(numero, k):
    coeficiente = factorial(numero) / (factorial(k) * factorial(numero-k))
    return coeficiente
 
def actividad1():
    numero = int(input("Deme el exponente de (a+b)^n"))
    print("(a+b)^{0}=".format(numero))
 
    for i in range(0, numero+1):
        a = numero-i
        print("{0} * a^{1}  *  b^{2} +".format(coeficienteBinominal(numero, i), a, i))

El problema es que en la función, coeficienteBinominal estabas utilizando un for...in, lo que no era necesario ya que únicamente quieras hallar el coeficiente de a y b de un único factor del polinomio de varios eh hay el fallo. Fíjate también que la función recibe un segundo parámetro k, el cual es pasado desde la función actividad1 a través de la variable i.

Puedes comprobar que realmente da el resultado esperado:
1
2
3
4
5
6
7
8
# Salida
(a+b)^5 =
1 * a^5 * b^0 +
5 * a^4 * b^1 +
10 * a^3 * b^2 +
10 * a^2 * b^3 +
5 * a^1 * b^4 +
1 * a^0 * b^5

También puedes comprobarlo en triángulo de Pascal:
sRQNzzqWQZagd9an9K46_PascalsTriangle2

Nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar