web-dev-qa-db-fra.com

Comment faire des boucles while avec plusieurs conditions

J'ai une boucle while en python

condition1=False
condition1=False
val = -1

while condition1==False and condition2==False and val==-1:
    val,something1,something2 = getstuff()

    if something1==10:
        condition1 = True

    if something2==20:
        condition2 = True

'
'

Je veux sortir de la boucle lorsque toutes ces conditions sont remplies, le code ci-dessus ne fonctionne pas

J'avais à l'origine 

while True:
      if condition1==True and condition2==True and val!=-1:
         break

qui fonctionne bien, est-ce la meilleure façon de faire cela?

Merci

15
mikip

Remplacez ands par ors.

16
while not condition1 or not condition2 or val == -1:

Mais il n’y avait aucun problème avec votre original d’utiliser un si dans un temps vrai.

2
user97370

Avez-vous remarqué que, dans le code que vous avez publié, condition2 n'est jamais défini sur False? De cette façon, votre corps de boucle n'est jamais exécuté.

Notez également qu'en Python, not condition est préféré à condition == False; De même, condition est préféré à condition == True.

0
tzot
condition1 = False
condition2 = False
val = -1
#here is the function getstuff is not defined, i hope you define it before
#calling it into while loop code

while condition1 and condition2 is False and val == -1:
#as you can see above , we can write that in a simplified syntax.
    val,something1,something2 = getstuff()

    if something1 == 10:
        condition1 = True

    Elif something2 == 20:
# here you don't have to use "if" over and over, if have to then write "Elif" instead    
    condition2 = True
# ihope it can be helpfull
0
MIIK7