IndentationError: unexpected indent

Résolu/Fermé
fadel - Modifié le 1 juil. 2021 à 16:02
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 15 juil. 2021 à 18:08
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

jee pee Messages postés 39598 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 20 avril 2024 9 226
1 juil. 2021 à 16:01
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.

0
ah d'accord merci je vois
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 749 > fadel
Modifié le 15 juil. 2021 à 18:10
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
0