Bonjour,

j'ai une liste des réels dans l'ordre décroissant et je veux faire un algorithme qui compare une valeur donnée 'sig_eq_Goodman' avec les termes de la liste.
une partie du script est la suivante:
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
 
x = [1,1666,16666,100000,200000,300000,400000,500000,700000,1000000,2000000,3000000,4000000,7000000,10000000,20000000,30000000,40000000,50000000,80000000,100000000,200000000,300000000,400000000,700000000,1000000000,10000000000]
 
y = [333.487953502046,333.487953502046,252.023589004762,144.841143106185,134.316479532823,128.773084241854,125.091228664023,122.370855728624,118.481010326472,114.620454409826,107.826945429572,104.248768756484,101.872187428479,97.605392834564,95.113463177554,90.728357283851,88.418699099329,86.884652288088,85.751207659768,83.515504894025,82.521999403873,79.691480778685,78.200631830545,77.210428132759,75.432666212810,74.394402580963,69.148163438073]
sig_eq_Goodman = (Rm*sig_dyn)/(Rm-(sig_stat/alpha_G))
        if sig_eq_Goodman > y[0]:
            N_cycle = 0
        elif sig_eq_Goodman < y[-1]:
            N_cycle = 1.0E+10
        else:
            i=1
            while (y[i] > sig_D):
                if (sig_eq_Goodman < y[i]) and (sig_eq_Goodman > y[i+1]):
                    N_cycle = x[i+1]-((y[i+1]-sig_eq_Goodman)*(x[i+1]-x[i])/(y[i+1]-y[i]))
                else:
                    i=i+1
        print ('N_cycle : %E\n'%(N_cycle))
ma problème est que dans le 3ème cas du boucle if ; je veux faire une restriction de sig_eq_Goodman entre deux termes consécutifs afin de calculer 'N_cycle' mais la boucle ne s'arrête pas une fois j'ai trouvé ce couple de restriction
je veux qu'une foie je trouve ces deux termes la boucle s'arrête même si la condition du boucle while est correcte.
je me trompe et je ne trouve pas comment le faire

j'ai besoin d'aide
merci d'avance