4 votes

Python sensible aux parenthèses supplémentaires?

Ce fragment de code a bien fonctionné

if True: print "just True"
if (True): print "(True)"

J'étudiais les boucles et celles-ci fonctionnaient bien

for i in range(1, 3):
    print i

i = 0
while i < 3: # sans parenthèses
    print i
    i = i + 1

i = 0
while (i < 3): # avec parenthèses
    print i
    i = i + 1

Quand j'ai essayé

for (i in range(1, 3)):
    print i

J'obtiens une erreur "SyntaxError: invalid syntax"

Je comprends que les parenthèses extérieures rendent la boucle for inutilisable (erreur) mais quelle partie de la syntaxe est-ce que je viole? cela fonctionnait bien dans la boucle while

5voto

Jean-François Fabre Points 94672

La syntaxe de for est (simplifiée)

for  in 

plus précisément:

for_stmt ::=  "for" target_list "in" expression_list ":" suite
              ["else" ":" suite]

puisque vous mettez entre parenthèses in , la syntaxe devient invalide.

for et in doivent être présents au même niveau d'imbrication.

la syntaxe de while est beaucoup plus simple:

while_stmt ::=  "while" expression ":" suite
                ["else" ":" suite]

ce qui permet les parenthèses, bien que ce ne soit pas nécessaire en Python

2voto

Mureinik Points 61228

Vous ne pouvez pas simplement ajouter des parenthèses n'importe où vous voulez. La syntaxe du while, généralement indiquée, est :

while  :

Ici, vous entourez simplement une condition de parenthèses, ce qui est bien, comme vous l'avez vu vous-même. La syntaxe de la boucle for est :

for  in  :

Vous pouvez entourer l' expression de parenthèses, mais pas des parties arbitraires de la syntaxe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X