web-dev-qa-db-fra.com

Comment avoir plusieurs conditions pour une instruction if en python

Donc, j’écris du code en python 3.1.5 qui requiert plus d’une condition pour que quelque chose se produise. Exemple:

def example(arg1, arg2, arg3):
    if arg1 == 1:
        if arg2 == 2:
            if arg3 == 3:
                print("Example Text")

Le problème est que lorsque je fais cela, il n’imprime rien si arg2 et arg3 sont égaux à autre chose que 0. Aide?

6
SooBaccaCole

J'utiliserais 

def example(arg1, arg2, arg3):
     if arg1 == 1 and arg2 == 2 and arg3 == 3:
          print("Example Text")

L'opérateur and est identique à la porte logique du même nom; il retournera 1 si et seulement si toutes les entrées sont 1. Vous pouvez aussi utiliser l'opérateur or si vous voulez cette porte logique.

EDIT: En fait, le code fourni dans votre message me convient parfaitement. Je ne vois pas de problèmes avec ça. Je pense que cela pourrait être un problème avec votre Python, pas avec le langage actuel.

12
SSung2710

Je suis un peu en retard pour la fête mais je pensais partager un moyen de le faire, si vous avez des types de conditions identiques, c.-à-d. Vérifier si tout, n'importe lequel ou à un montant donné de A_1 = A_2 et B_1 = B_2, cela peut se faire de la manière suivante:

cond_list_1=["1","2","3"]
cond_list_2=["3","2","1"]
nr_conds=1

if len([True for i, j in Zip(cond_list_1, cond_list_2) if i == j])>=nr_conds:
    print("At least " + str(nr_conds) + " conditions are fullfilled")

if len([True for i, j in Zip(cond_list_1, cond_list_2) if i == j])==len(cond_list_1):
    print("All conditions are fullfilled")

Cela signifie que vous pouvez simplement modifier les deux listes initiales, du moins pour moi, cela facilite les choses.

1
no nein

En supposant que vous passez des chaînes plutôt que des entiers, essayez de transtyper les arguments en entiers:

def example(arg1, arg2, arg3):
     if int(arg1) == 1 and int(arg2) == 2 and int(arg3) == 3:
          print("Example Text")

(Édité pour souligner que je ne demande pas de clarification; j'essayais d'être diplomate dans ma réponse. ????)

0
Christian Henry

Peut-être un peu bizarre ou une mauvaise pratique, mais c’est une façon de procéder.

(arg1, arg2, arg3) = (1, 2, 3)

if (arg1 == 1)*(arg2 == 2)*(arg3 == 3):
    print('Example.')

Tout ce qui est multiplié par 0 == 0. Si l'une de ces conditions échoue, la valeur est false.

0
Elyria

Darian Moody a une belle solution à ce défi dans son blog post :

a = 1
b = 2
c = True

rules = [a == 1,
         b == 2,
         c == True]

if all(rules):
    print("Success!")

La méthode all () renvoie True lorsque tous les éléments de l'élément iterable donné sont vrais. Sinon, il retourne False.

Vous pouvez lire un petit} _ plus à ce sujet dans les documents python ici et plus d’informations et des exemples ici .

(J'ai également répondu à la question similaire avec cette information ici - Comment avoir plusieurs conditions pour une instruction if en python )

0
burkesquires