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
| def condict_reste(dn,dico_2,dico_2_i2v,dico_2_v2i,dico_2_p,maxp,r,lp):
for pl in lp: # lit la boucle
pv=dico_2_p[pl]
vp=dico_2_v2i[pv]
if r<vp and maxp!=pl: # si r est trop grand pour vp et que maxp!=pl (pl c'est un int et maxp aussi) je veut rien faire et passer à l'iteration suivante
None
# si non pas besoin
elif r<vp and maxp==pl: # si malgré que toujours r trop grand pour vp mais maxp (maxp c'est toujours à la fin de la boucle) est ==pl alors faire ceci
dn, dico_2, dico_2_i2v, dico_2_v2i, vn=condict_dict(r,dn,dico_2,dico_2_i2v,dico_2_v2i,str(r)) # condict_dict n'à pas besoin d'être montrer car il fonction correctement
elif r>=vp and maxp!=pl: # si non si pas la fin de la boucle r assez grand (c'est à dire >=) pour vp faire ceci
n=r/vp
n2=n*vp
nr=r%vp
if n==1:
vn='v'+str(pv)
else:
if n<=vp<dico_2_v2i[dico_2_p[maxp]]:
dn, dico_2, dico_2_i2v, dico_2_v2i, vn=condict_dict(n,dn,dico_2,dico_2_i2v,dico_2_v2i,str(n))
elif n>vp>=dico_2_v2i[dico_2_p[maxp]]:
dn, dico_2, dico_2_i2v, dico_2_v2i, vn=condict_reste(dn,dico_2,dico_2_i2v,dico_2_v2i,dico_2_p,maxp,n,lp) # faire appel recurvise à la fonction mais normalement pas de problème
dn, dico_2, dico_2_i2v, dico_2_v2i, vn=condict_dict(n2,dn,dico_2,dico_2_i2v,dico_2_v2i,vn+'*v'+str(pv))
if nr!=0: # si reste encore alors appel encore de la function
dn, dico_2, dico_2_i2v, dico_2_v2i, vn=condict_reste(dn,dico_2,dico_2_i2v,dico_2_v2i,dico_2_p,maxp,nr,lp)
dn, dico_2, dico_2_i2v, dico_2_v2i, vn=condict_dict(r,dn,dico_2,dico_2_i2v,dico_2_v2i,vn+'+'+tr)
break # comme boucle pas fini mais résultat correct fin de la boucle en local
return dn, dico_2, dico_2_i2v, dico_2_v2i, vn |
Partager