IndentationError: unexpected indent [Résolu]

Signaler
-
Messages postés
29981
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 juillet 2021
-
Bonjour, j'ai un soucis avec mon code ça me présent une erreur d'indentation pourtant je l'ai corrigé mais ça reviens toujours, je vous l'affiche en bas si il y'a quelqu'un qui peut m'aider stp.

le problème se trouve au niveau de : " return xopt, minf, result_code, nbr_evaluation"

#Bibliothèque

import numpy as np
import scipy.signal
import statistics
import math
import nlopt  # optimisation
from numpy import *
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt

# Fonction ''''

mex = np.linspace(8.1, 8.1, num=31, endpoint=True)
x = np.linspace(0.7, 30.1, num=295, endpoint=True)
y = [152.948, 152.948, 152.948, 152.948, 152.948, 152.948, 187.581, 187.581, 187.581, 187.581, 187.581, 187.581, 187.581, 26.9917, 26.9917, 26.9917, 26.9917, 26.9917, 26.9917, 8.13275, 8.13275, 8.13275, 8.13275, 8.13275, 8.13275, 8.11583, 8.11583, 8.11583, 8.11583, 8.11583, 8.11583, 8.08774, 8.08774, 8.08774, 8.08774, 8.08774, 8.08774, 8.09396, 8.09396, 8.09396, 8.09396, 8.09396, 8.09396, 8.09396, 8.09424, 8.09424, 8.09424, 8.09424, 8.09502, 8.09502, 8.09385, 8.09385, 8.09385, 8.09385, 8.09385, 8.09715, 8.09715, 8.09715, 8.10806, 8.10806, 8.10806, 8.1, 8.1, 8.1, 8.1, 8.1, 8.1, 8.0958, 8.09735, 8.09735, 8.09735, 8.09735, 8.09735, 8.1, 8.1, 8.1, 8.1, 8.1, 8.1, 8.0946, 8.0946, 8.0946, 8.09668, 8.09668, 8.09668, 8.09668, 8.09668, 8.09668, 8.09668, 8.09441, 8.09441, 8.09622, 8.09622, 8.09622, 8.09622, 8.09622, 8.09622, 8.09622, 8.09622, 8.10434, 8.10434, 8.0959, 8.0959, 8.0959, 8.0959, 8.0959, 8.0959, 8.0959, 8.0959, 8.0959, 8.09279, 8.08541, 8.08541, 8.08541, 8.08541, 8.08541, 8.08541, 8.08541, 8.08541, 8.08541, 8.10446, 8.10542, 8.10542, 8.10542, 8.10542, 8.10542, 8.10542, 8.10542, 8.10542, 8.10542, 8.10542, 8.09503, 8.09503, 8.09503, 8.09503, 8.09503, 8.09503, 8.09503, 8.09503, 8.09503, 8.09503, 8.09474, 8.09474, 8.09474, 8.09474, 8.09474, 8.09474, 8.09474, 8.09474, 8.09474, 8.09474, 8.10364, 8.10364, 8.10364, 8.10364, 8.10364, 8.10364, 8.10364, 8.10364, 8.10364, 8.10364, 8.09735, 8.32222, 8.32222, 8.32222, 8.32222, 8.32222, 8.32222, 8.32222, 8.32222, 8.32222, 8.32222, 8.11122, 8.11122, 8.11122, 8.11122, 8.11122, 8.11122, 8.11122, 8.11122, 8.11122, 8.11122, 8.11018, 8.39024, 8.39024, 8.39024, 8.39024, 8.39024, 8.39024, 8.39024, 8.39024, 8.39024, 8.11015, 8.4737, 8.4737, 8.4737, 8.4737, 8.4737, 8.4737, 8.4737, 8.4737, 8.4737, 8.12478, 8.12478, 8.11703, 8.11703, 8.11703, 8.11703, 8.11703, 8.11703, 8.11703, 8.11703, 8.11703, 8.82622, 8.74292, 8.74292, 8.74292, 8.74292, 8.74292, 8.74292, 8.74292, 8.74292, 8.74292, 8.10013, 8.10013, 8.11761, 8.11761, 8.11761, 8.11761, 8.11761, 8.11761, 8.11761, 8.11761, 9.2984, 9.2984, 9.77065, 9.77065, 9.77065, 9.77065, 9.77065, 9.77065, 9.77065, 9.77065, 9.77065, 9.73215, 9.73215, 9.17527, 9.17527, 9.17527, 9.17527, 9.17527, 9.17527, 9.17527, 9.17527, 9.10847, 9.10847, 215.593, 215.593, 215.593, 215.593, 215.593, 215.593, 215.593, 215.593, 9.97523, 9.97523, 9.97523, 121.103, 121.103, 121.103, 121.103, 121.103, 121.103, 121.103, 121.103, 9.89501, 9.89501, 199.925, 199.925, 199.925, 199.925, 199.925, 199.925, 199.925, 199.925, 11.2449, 11.2449, 287.973, 287.973, 287.973, 287.973, 287.973, 287.973, 287.973, 287.973]
y1 = scipy.signal.medfilt(y, kernel_size=11)
fonc_f = interp1d(x, y1)

def fonc_g(x):
     return x/(2*np.sin(np.pi/8))
   
# Fonction pour optimiser avec Nlopt'''

def fonc_opt(x):
        return ( (fonc_f(x) - fonc_g(x))**2 )


x0 = 5.0

opt = nlopt.opt(nlopt.LN_SBPLX, 1) # specifie l'algorithme et le nombre de paramètre d'optimisation
opt.set_lower_bounds(1.0) # limitte borne inférieur
opt.set_upper_bounds(100.0) # limitte borne supérieur
opt.set_xtol_rel(1e-4) # tolerance
opt.set_ftol_rel(1e-8)
opt.set_min_objective(fonc_opt) # appel la fonction objectif qui est residual
xopt = opt.optimize([x0]) # fait l'optimisation
minf = opt.last_optimum_value() # dernier valeur optimale obtenu ou bien le coût
result_code = opt.last_optimize_result() # verification convergeance
nbr_evaluation = opt.get_numevals() # obtient le nombre d'evaluation de la fonction residual
print (xopt,minf,result_code,nbr_evaluation)

    return xopt, minf, result_code, nbr_evaluation  
               
plt.plot(x, y, "o", color="blue", label="experimental data")
plt.plot(x, y, color="cyan")
plt.plot(x, fonc_g(x), "r", label="Ideal line")
plt.plot(mex, "y", color="lime", label="True radius")
plt.xlabel("rROI (μm)")
plt.ylabel("rt (μm)")



Configuration: Macintosh / Safari 11.0.1

1 réponse

Messages postés
32495
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
22 juillet 2021
7 826
Bonjour,

Sur le forum pour voir l'indentation il faut utiliser les balises code : Pour la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icônes pour l'enrichissement du texte. Celle qui a cet aspect
<> ▼
permet d'appliquer au code, suivant une liste de valeurs, le format correspondant à sa nature.
Un petit tuto là : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ta ligne return xopt ... ne fait référence à rien puisque pas de fonction définie au dessus, et elle se retrouve toute seule indentée alors que les lignes l'entourant ne le sont pas.

ah d'accord merci je vois
Messages postés
29981
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 juillet 2021
7 138 > fadel
Bonjour,

Vu ton code je dirais que tu as oublié d'indenter les lignes 27 à 42.

De plus tu n'utilises pas le même niveau de profondeur d'indentation (ligne 21 et 26), attention à être consistant.

Enfin attention à utiliser dans l'ensemble de ton script les même caractères pour indenter (soit des espaces, soit des tabulations). Personnellement je recommande d'utiliser des espaces (4 espaces fois le niveau de profondeur).

Bonne chance