web-dev-qa-db-fra.com

IndentationError attend un bloc en retrait

Voici le code .:

def myfirst_yoursecond(p,q):

a = p.find(" ")
b = q.find(" ")
str_p = p[0:a]
str_q = p[b+1:]

if str_p == str_q:
    result = True
else:
    result = False
return result

Voici l'erreur:

Traceback (most recent call last):
File "vm_main.py", line 26, in <module>
import main
File "/tmp/vmuser_ssgopfskde/main.py", line 22
result = False
^
IndentationError: expected an indented block

Qu'est ce qui ne va pas avec mon code?

11
Sam

Vous avez mélangé des onglets et des espaces. Cela peut conduire à des erreurs déroutantes.

Je suggérerais d'utiliser seulement tabs ou seulement espaces pour l'indentation.

Utiliser seulement des espaces est généralement le choix le plus facile. La plupart des éditeurs ont une option pour convertir automatiquement les onglets en espaces. Si votre éditeur dispose de cette option, activez-la.


En passant, votre code est plus bavard qu'il ne le faut. Au lieu de cela:

if str_p == str_q:
    result = True
else:
    result = False
return result

Faites juste ceci:

return str_p == str_q

Vous semblez aussi avoir un bug sur cette ligne:

str_q = p[b+1:]

Je vous laisse découvrir quelle est l'erreur.

31
Mark Byers

Cette erreur se produit également si vous avez un bloc sans déclaration.

Par exemple:

def my_function():
    for i in range(1,10):


def say_hello():
    return "hello"

Notez que le bloc for est vide. Vous pouvez utiliser l'instruction pass si vous souhaitez tester le code restant dans le module. 

9
Pramod

Si vous utilisez un mac et du texte sublime 3, c’est ce que vous faites.

Accédez à votre /Packages/User/ et créez un fichier appelé Python.sublime-settings.

Généralement, /Packages/User se trouve dans votre ~/Library/Application Support/Sublime Text 3/Packages/User/Python.sublime-settings si vous utilisez mac os x.

Ensuite, vous mettez ceci dans le Python.sublime-settings.

{
    "tab_size": 4,
    "translate_tabs_to_spaces": false
}

Nous remercions Mark Byer answer , sublime text 3 docs et guide de style python .

Cette réponse s'adresse principalement aux lecteurs qui ont le même problème et qui tombent sur le même problème et qui utilisent le texte sublime 3 sur Mac OS X.

3
Kim Stacks

J'ai eu la même erreur, c'est ce que j'ai fait pour résoudre le problème.

Avant l'indentation:

 enter image description here

Erreur d'indentation: attend un bloc en retrait.

Après l'indentation:

 enter image description here

Fonctionne bien. Après l'espace TAB.

3
MAX

Vous devez installer un éditeur (ou IDE) prenant en charge la syntaxe Python. Il peut mettre en évidence le code source et effectuer une vérification de format de base .Par exemple: Eric4, Spyder, Ninjia ou Emacs, Vi.

0
wuliang