Python >> Tutoriel Python >  >> Python

Python IndentationError :retrait inattendu (Comment réparer ce bogue stupide)

Si vous êtes comme moi, vous essayez d'abord les choses dans votre code et corrigez les bogues au fur et à mesure qu'ils surviennent. Un bogue fréquent en Python est le IndentationError: unexpected indent . Alors, que signifie ce message d'erreur ?

L'erreur IndentationError: unexpected indent se produit si vous utilisez une indentation incohérente des tabulations ou des espaces blancs pour les blocs de code indentés tels que le if bloc et le for boucle. Par exemple, Python lancera une erreur d'indentation, si vous utilisez un for boucle avec trois espaces blancs indentation pour la première ligne et un caractère de tabulation indentation de la deuxième ligne du corps de la boucle. Pour corriger l'erreur, utilisez le même nombre d'espaces vides pour tous les blocs de code en retrait.

Examinons un exemple dans lequel cette erreur se produit :

for i in range(10):
  print(i)
   print('--')

La première ligne du corps de la boucle utilise deux espaces comme niveau d'indentation. La deuxième ligne du corps de la boucle utilise trois caractères d'espacement comme niveau d'indentation. Ainsi, les blocs d'indentation sont différents pour différentes lignes d'un même bloc. Cependant, Python s'attend à ce que toutes les lignes indentées aient structurellement la même indentation.

Comment corriger l'erreur d'indentation de Python ?

Pour corriger l'erreur, utilisez simplement le même nombre d'espaces blancs pour chaque ligne de code :

for i in range(10):
    print(i)
    print('--')

La recommandation générale est d'utiliser quatre caractères d'espacement simples ' ' pour chaque niveau d'indentation. Si vous avez des niveaux d'indentation imbriqués, cela signifie que le deuxième niveau d'indentation a 4+4=8 caractères d'espacement simples :

for i in range(10):
    for j in range(10):
        print(i, j)

Le mélange d'onglets et de caractères d'espacement provoque souvent l'erreur

Un problème courant est également que l'indentation semble être cohérente, alors qu'elle ne l'est vraiment pas. Le code suivant a un caractère de tabulation sur la première ligne et quatre espaces vides sur la deuxième ligne du bloc de code en retrait. Ils se ressemblent mais Python renvoie toujours l'erreur d'indentation.

A première vue, l'indentation est la même. Cependant, si vous dépassez les espaces avant print(i) , vous voyez qu'il n'est composé que d'un seul caractère tabulaire tandis que les espaces avant le print(j) instruction se compose d'un certain nombre d'espaces vides ' ' .

Essayez-le vous-même : Avant que je ne vous dise quoi faire à ce sujet, essayez de corriger le code vous-même dans notre shell Python interactif :

Exercice  :Corrigez le code dans le shell de code interactif pour vous débarrasser du message d'erreur.

Voulez-vous développer les compétences d'un professionnel Python complet —tout en étant payé dans le processus ? Devenez freelance Python et commandez votre livre Leaving the Rat Race with Python sur Amazon (Kindle/Print ) !

Comment réparer l'erreur d'indentation pour tous les temps ?

La source de l'erreur est souvent l'utilisation abusive des tabulations et des caractères d'espacement. Dans de nombreux éditeurs de code, vous pouvez définir le caractère de tabulation sur un nombre fixe d'espaces blancs. De cette façon, vous n'utilisez pratiquement jamais le caractère tabulaire lui-même. Par exemple, si vous avez l'éditeur de texte sublime, le tutoriel rapide suivant vous assurera que vous ne rencontrerez plus jamais cette erreur :

  • Définir Sublime Text utiliser des tabulations pour l'indentation :View –> Indentation –> Convert Indentation to Tabs
  • Décocher l'option Indent Using Spaces dans le même sous-menu ci-dessus.

Humour de programmeur