cs_john491
Messages postés4Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention 5 mai 2006
-
4 mai 2006 à 13:27
cs_john491
Messages postés4Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention 5 mai 2006
-
5 mai 2006 à 16:06
Bonjour a tous.
Je dois creer une petite bibliotheque sur les polynomes ( donc j'ai pas le droit d'utiliser les fonctions predefinies sur les polynomes :( )
Et ce qui me bloque est d'ecrire une fonction qui transforme une chaine de caracteres en une liste par exemple : pour la chaine '2x^7-36x^2+6x+1' la fonction doit renvoyer la liste : [1,6,-36,0,0,0,0,2] ( ou [2,0,0,0,0,-36,6,1])
J'ai ecrit une fonction (mais qui ne marche pas malheureusement :( )
from string import *
>>> l='2x^7-36x^2+6x+1'
>>> y=split(l,'+')
>>> y
['2x^7-36x^2', '6x', '1']
>>> x=[split(y[i],'-') for i in range(len(y))]
>>> x
[['2x^7', '36x^2'], ['6x'], ['1']]
>>> t=[x[i][j] for i in range(len(x)) for j in range(len(x[i]))]
>>> t
['2x^7', '36x^2', '6x', '1']
>>> z=[split(t[i],'x') for i in range(len(t)) ]
>>> z
[['2', '^7'], ['36', '^2'], ['6', ''], ['1']]
>>> s=[z[i][j] for i in range(len(z)) for j in range(len(z[i]))]
>>> s
['2', '^7', '36', '^2', '6', '', '1']
>>> f=[split(s[i],'^') for i in range(len(s)) ]
>>> f
[['2'], ['', '7'], ['36'], ['', '2'], ['6'], [''], ['1']]
>>> for i in range(len(h)-1,-1,-1):
if h[i]=='':
del(h[i])
#ou encore (equivalent)
>>> b=[]
>>> for i in range(len(h)):
if h[i]!='':
b=b+[h[i]]
>>> b
['2', '7', '36', '2', '6', '1']
Ca me permet de recuperer les coefficients et les puissances mais je perds le signe des coefficients a la fin (le signe ' - ' )
Toutes les indications sont les bienvenues.
Merci d'avance.
PS1:Je dois rendre mon projet dans peux de jours.
PS2:Je ne suis que debutant en Python.