1
votes

Comment utiliser "continuer" sur une seule ligne sinon dans une boucle for

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


2 commentaires

X si C sinon Y est une expression. continue est une déclaration. Les expressions en Python ne peuvent pas contenir d'instructions. Transformez votre expression if en une instruction if à 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 ).


3 Réponses :


-1
votes

Python utilise l'indentation pour les structures de contrôle. Ce que vous voulez faire n'est pas possible en python.


2 commentaires

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 (...) :)



4
votes

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.


0 commentaires

1
votes

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


2 commentaires

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!