Python “s'attendre à un retrait du bloc”
Permettez-moi de commencer par dire que je suis TOTALEMENT nouveau dans la programmation. J'ai récemment repris Python et il l'a toujours des coups de pied moi dans la tête avec une récurrents d'erreur -- "s'attendre à un retrait du bloc"
Maintenant, je sais qu'il y a plusieurs autres threads d'aborder ce problème, et j'ai regardé un bon nombre d'entre eux, cependant, même la vérification de mes indentation ne m'a pas donné de meilleurs résultats. J'ai remplacé tous mes tirets avec 4 espaces et même réécrit le code plusieurs fois. Je vais poster ce compteur d'affectation, j'ai eu comme un exemple.
option == 1
while option != 0:
print "MENU"
option = input()
print "please make a selection"
print "1. count"
print "0. quit"
if option == 1:
while option != 0:
print "1. count up"
print "2. count down"
print "0. go back"
if option == 1:
print "please enter a number"
for x in range(1, x, 1):
print x
elif option == 2:
print "please enter a number"
for x in range(x, 1, 1):
elif option == 0:
break
else:
print "invalid command"
elif option == 0:
break
- Pouvez-vous éditer votre post et de nous donner les premières message d'erreur w/ numéros de ligne s'il vous plaît 🙂
Vous devez vous connecter pour publier un commentaire.
De départ avec
elif option == 2:
, vous en retrait une fois de trop. Dans un bon éditeur de texte, vous devriez être en mesure de mettre en évidence ces lignes et appuyez sur Maj+Tab pour résoudre le problème.En outre, il n'existe pas de déclaration après
for x in range(x, 1, 1):
. Insérer un retraitpass
de ne rien faire dans lafor
boucle.Aussi, dans la première ligne, vous avez écrit
option == 1
.==
tests pour l'égalité, mais que vous vouliez dire=
( un seul signe égal), qui attribue la valeur de droite à gauche du nom, c'est à dire[Ctrl]-[<]
(en mode visuel, ajouter un mouvement à l'avance en mode normal)option = 1
au lieu deoption == 1
dans la première ligne, n'est-ce pas? Mise à jour de la réponse.en python .....intendation questions, par exemple:
Dans ce cas, "all the best" sera imprimé si l'une des deux conditions s'exécute, mais si ça aurait été comme ça
puis "all the best" sera imprimé seulement si a==2
Votre
for
boucle n'a pas de corps de boucle:En fait, l'ensemble de la
if option == 1:
bloc a indentation des problèmes.elif option == 2:
devrait être au même niveau que leif
déclaration.Il y a plusieurs problèmes:
elif option == 2:
et la suiteelif
-else
doit être aligné avec le deuxièmeif option == 1
, pas avec lefor
.La
for x in range(x, 1, 1):
est pas un corps.Depuis "l'option 1 (nombre)" nécessite une deuxième entrée, vous devez appeler
input()
pour la deuxième fois. Cependant, pour la santé mentale de cause, je vous exhorte à stocker le résultat dans une deuxième variable plutôt que sur la réutilisation deoption
.La comparaison de la première ligne de votre code est probablement censé être une mission.
Vous découvrirez plus de problèmes une fois que vous êtes en mesure d'exécuter votre code (vous aurez besoin d'un couple de plus
input()
appels, l'un desrange()
appels auront besoin d'attention, etc).Enfin, merci de ne pas utiliser la même variable que la variable de boucle et dans le cadre de la première/terminale condition, comme dans:
Ça peut fonctionner, mais il est très difficile à lire. Donner à la variable de boucle un nom différent:
Votre dernière
for
instruction est manquant un corps.Python s'attend à un retrait du bloc de suivre la ligne avec le, ou avoir du contenu après la virgule.
Le premier type est le plus fréquent, donc il dit qu'il s'attend à un peu en retrait du code de la suivre. Vous avez un
elif
au même niveau d'indentation.C'est à tort, au moins:
Le corps de la boucle est en retrait: le retrait est Python permet de regrouper des états. À l'invite de commandes, vous devez taper une tabulation ou un espace(s) pour chaque retrait ligne. Dans la pratique, vous permettra de préparer plus compliqué d'entrée pour Python avec un éditeur de texte; tous les honnêtes éditeurs de texte ont une auto-tiret installation. Lorsqu'une instruction composée est entré de manière interactive, elle doit être suivie par une ligne vide pour indiquer la fin (depuis l'analyseur ne peut pas deviner quand vous avez tapé la dernière ligne). Notez que chaque ligne dans un bloc de base doit être découpée par la même quantité.
src: ##
##https://docs.python.org/3/tutorial/introduction.html#using-python-as-a-calculator