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 )

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
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 peu de jours.
PS2:Je ne suis que debutant en Python.