J'ai une boucle for et à l'intérieur de celle-ci il y a une simple condition if sur une seule ligne. Je veux utiliser l'option Continuer dans la partie else.
Cela ne fonctionne pas:
for x in range(4) :
if flag :
defA()
else :
continue
^ SyntaxError: invalid syntax
Code de travail:
XXX
3 Réponses :
Python utilise l'indentation pour les structures de contrôle. Ce que vous voulez faire n'est pas possible en python.
Ce n'est pas tout à fait correct, ni ne répond à la question. Vous pouvez écrire, par exemple if flag: foo () . Notez le manque d'indentation dans la structure de contrôle.
@Selcuk votre réponse était sans aucun doute meilleure, mais ma réponse est encore littéralement exacte. Python utilise l'indentation pour les structures de contrôle - et - ce qu'il voulait faire n'est pas possible en Python. Je n'avais pas l'intention de dire qu'il n'y a aucun moyen possible de sauter un retrait de temps en temps comme mon instruction préférée if DE: BUG (...) :)
Il n'y a pas une seule ligne si condition en Python. Ce que vous avez dans votre premier exemple est une expression ternaire .
Vous essayez d'attribuer continue à une variable nommée valeur , ce qui n'a aucun sens, d'où l'erreur de syntaxe.
Pouvez-vous nous expliquer un peu, car ce que vous essayez d’obtenir, des experts peuvent vous proposer une meilleure alternative. Pour moi, cela n'a pas de sens d'ajouter else ici car vous n'ajoutez que else pour continuer, ce qui se produira dans tous les cas après la condition if.
Dans tous les cas, si je comprends bien, ce que vous recherchez est un compréhension de la liste . Voici un exemple pratique de son utilisation,
def defA() :
return "yes"
flag = True
value = [defA() if flag else 'No' for x in range(4)] #If you need to use else
value = [defA() for x in range(4) if flag] #If there is no need for else
C'est vrai, mais il est prudent de supposer qu'il s'agit d'un extrait du code réel, donc nous ne savons pas s'il y a plus de lignes après la clause if dans le for boucle.
D'accord, c'est pourquoi je lui ai d'abord suggéré d'expliquer le problème d'abord plutôt que de discuter de sa solution. Juste une suggestion cependant!
X si C sinon Yest une expression.continueest une déclaration. Les expressions en Python ne peuvent pas contenir d'instructions. Transformez votre expressionifen une instructionifà corriger.L'opérateur ternaire vous permet d'affecter une variable à A si la condition de correspondance est différente B. Cela signifie que B devrait être une variable ou une valeur au lieu d'un mot-clé Python (
continue).