Python - Operaciones con simbolos

 
Vista:

Operaciones con simbolos

Publicado por Eva (2 intervenciones) el 16/09/2015 21:13:20
Hola a todos,

me he encontrado con un problema al operar con símbolos y he hecho un miniprograma que resume mi duda:

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
from sympy import*
y=Symbol('y')
 
#estas son mis dos listas iniciales:
 
lista1=[[0,2,1,3,],y-80]
lista2=[0,None,y-20]
 
#quiero aislar el valor de 'y' en lista1 resolviendo y-80=0
#y sustituir este valor en la 'y' de lista2 para obtener un numero.
 
#para resolver y-80=0 uso esta funcion que venia con la descarga del programa sympy
y=solve(lista1[1],y)
 
print("valor y despues del solve=",y)
#Al resolver la ecuacion 'y' pasa a ser una lista
print("Lista1=",lista1)
print("lista2=",lista2)
#como se puede ver en la solucion 'y' no se ha sustituido por ningun simbolo de dentro de las listas
#de hecho, al ser una lista creo que no se puede sustituir tal cual, pero al hacer esto:
print("y[0]",y[0])
#consigo 'y' como valor entero para poder trabajar con el
 
#si hago esta operacion funciona sin problema:
y[0]= y[0] -20
 
print("y despues de operacion=",y)
print("lista2[2]",lista2[2])
lista2[2]=y[0]
print("lista2",lista2)
# y aqui el problema queda resuelto
 
#problema real:
#a la practica, yo no puedo escribir a mano y[0]=y[0]-20., necesito que el ordenador lo haga solo.
#Me interesaria poder sustituir el valor 'y' de la lista lista2 por y[0] para poder operar con el,
#y poder hacer y[0]=lista2[2] para poder resolver en generico ya que el valor de lista2 ira cambiando.
 
#Para hacer esto solo he encontrado una funcion 'replace' que prometia mucho pero que a la practica solo
#sirve para textos. O al menos yo no lo he podido utilizar para nada mas.

El programa devuelve:

1
2
3
4
5
6
7
8
9
>>>
('valor y despues del solve=', [80])
('Lista1=', [[0, 2, 1, 3], y - 80])
('lista2=', [0, None, y - 20])
('y[0]', 80)
('y despues de operacion=', [60])
('lista2[2]', y - 20)
('lista2', [0, None, 60])
>>>


Muchas gracias por vuestra ayuda!!
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