autre & amp; Les instructions elif ne fonctionnent pas en Python
Je suis un débutant en Python et apprend actuellement le Contrôle de Flux des commandes comme if
else
etc.
La if
déclaration travaille tous très bien, mais quand j'écris else
ou elif
commandes, l'interprète me donne une erreur de syntaxe. Je suis à l'aide de Python 3.2.1 et le problème est découlant à la fois de ses natif de l'interprète et de repos.
Je suis en suivant comme il est donné dans le livre 'Un Octet De Python . Comme vous pouvez le voir, elif
et else
donnent Syntaxe non Valide.
>> number=23
>> guess = input('Enter a number : ')
>> if guess == number:
>> print('Congratulations! You guessed it.')
>> elif guess < number:
**( It is giving me 'Invalid Syntax')**
>> else:
**( It is also giving me 'Invalid syntax')**
Pourquoi est-ce arrivé? Je reçois le problème de RALENTI et de l'interactif de python. J'espère que la syntaxe est bonne.
source d'informationauteur jayantr7
Vous devez vous connecter pour publier un commentaire.
Il semble que vous entrez une ligne vide après le corps de la
if
déclaration. C'est un repère pour le compilateur interactif que vous avez terminé avec le bloc entièrement, de sorte qu'il est ne s'attend à aucunelif
/else
blocs. Essayez d'entrer le code exactement comme ça, et faire entrer seulement une fois après chaque ligne:Le problème, c'est la ligne vide de la saisie avant la
else
ouelif
. Attention à l'invite de commandes, vous êtes donné. Si c'est>>>
puis Python attend le début d'une nouvelle déclaration. Si c'est...
alors elle attend de vous pour continuer une déclaration précédente.elif
etelse
doit immédiatement suivent la fin de l'if
bloc, ou Python supposer que le bloc a fermé sans eux.Dans votre code, l'interprète termine le
if
bloc lors de l'indentation, laelif
et laelse
ne sont pas associés avec elle. Ils sont donc comprise comme autonome états, qui n'a pas de sens.En général, essayez de suivre les lignes directrices de stylequi comprennent la suppression excessive des espaces.
Au RALENTI et interactif de python, vous avez entré deux fois de suite CRLF qui vous amène de l'instruction if.
C'est le problème de RALENTI ou interactif de python. Il sera ok lorsque vous en utilisant n'importe quel éditeur, assurez-vous que votre retrait est de droit.
Assurez-vous d'avoir votre identation droit. La syntaxe est ok.
Rappelez-vous que par défaut, la valeur de retour à partir de l'entrée sera une chaîne de caractères et un entier. Vous ne pouvez pas comparer des chaînes de caractères avec des booléens comme <, >, =>, <= (sauf si vous comparez la longueur). Par conséquent, votre code devrait ressembler à ceci:
D'ailleurs que votre retrait est mal. Le code ne marchera pas.
Je sais que vous êtes à l'aide de python 3. quelque chose.
Je suis à l'aide de python 2.7.3
le code qui sera effectivement travailler pour ce que vous essayez d'accomplir.
La seule différence, je voudrais dire à python que le nombre est une chaîne de caractères pour le code du travail. Si ce n'est d'aller à penser est un Entier. Quand quelqu'un exécute le code, qu'ils sont de l'entrée d'une chaîne en un entier. Il existe de nombreuses façons de changer ce code, mais c'est la solution de facilité, je voulais offrir il y a une autre manière que je ne peux penser sans faire la 23 dans une chaîne. Ou vous pourrait de "23" mettre des citations ou on peut utiliser la fonction int() dans l'entrée. qui permettrait de transformer tout ce qu'ils entrent en entier et un certain nombre.
Python peut générer la même syntaxe non valide "erreur même si ident pour "elif" en bloc ne correspond pas à " si " bloc ident (onglets pour la première, des espaces pour la deuxième ou vice versa).