J'apprends la programmation python et je traversais les conditions If Else. Même si l'instruction If est vraie, mon code exécute la condition else.

Veuillez vérifier le code ci-dessous:

age = int(input("Enter your Age (in years)"))
sex = input("Enter you Sex(M/F)")
if(sex == 'M'):
    if(age < 20):
        print("You are just a teen.")
    if(age >= 20 and age < 25):
        print("You are a young man now.")
    elif(age >=25 and age < 30):
        print("You are a mature man now")
    else:
        print("You are getting old")
if(sex == 'F'):
    if(age < 20):
        print("You are just a teen.")
    if(age >= 20 and age < 25):
        print("You are a young woman now.")
    elif(age >=25 and age < 30):
        print("You are a lady now")

Ici, si j'entre l'âge comme 2 et le sexe comme M, le code passe en première condition et imprime le message

"Vous n'êtes qu'une équipe"

Parallèlement, le code exécute également la condition else et imprime

Tu vieillis

Je ne comprends pas ce comportement. J'ai vérifié l'indentation et toutes les indentations sont correctes.

0
Dexter 12 avril 2018 à 22:46

4 réponses

Meilleure réponse

Vous en avez accidentellement fait un double si cela entraînerait l'exécution des deux instructions.

age = int(input("Enter your Age (in years)"))
sex = input("Enter you Sex(M/F)")
if(sex == 'M'):
    if(age < 20):
        print("You are just a teen.")
    elif(age >= 20 and age < 25): # notice now it is one if-elif block
        print("You are a young man now.")
    elif(age >=25 and age < 30):
        print("You are a mature man now")
    else:
        print("You are getting old")
if(sex == 'F'):
    if(age < 20):
        print("You are just a teen.")
    elif(age >= 20 and age < 25): # same here
        print("You are a young woman now.")
    elif(age >=25 and age < 30):
        print("You are a lady now")
3
nulltron 12 avril 2018 à 19:52

Dans l'extrait de code que vous avez donné, le else est connecté à la deuxième instruction if: if(age >= 20 and age < 25):. Le premier "si" s'exécute correctement, mais lorsque le second "si" échoue, il exécute le "else". Cela peut être corrigé en changeant le deuxième "si" en "elif":

if(sex == 'M'):
    if(age < 20):
        print("You are just a teen.")
    elif(age >= 20 and age < 25):
        print("You are a young man now.")
    elif(age >=25 and age < 30):
        print("You are a mature man now")
    else:
        print("You are getting old")
1
Melody 12 avril 2018 à 19:55

Commutateur

if(age < 20):
    print("You are just a teen.")
if(age >= 20 and age < 25):
    print("You are a young man now.")

Avec

if(age < 20):
    print("You are just a teen.")
elif(age >= 20 and age < 25):
    print("You are a young man now.")

Ce qui se passe, c'est que votre deuxième instruction if à l'intérieur de if sex == 'M' ne se réalise pas parce que l'âge n'est pas compris entre 20 et 25. Puisque l'élif n'est pas non plus rempli, ce qui se trouve à l'intérieur du bloc else s'exécute.

1
Primusa 12 avril 2018 à 19:51

Il imprime une sortie correcte. Tout d'abord, il vérifie que l'âge est inférieur à 20 ans, ce qui est correct, il imprime ensuite "Vous n'êtes qu'un adolescent".

if(sex == 'M'):
    if(age < 20):
        print("You are just a teen.")

Après cela, il vérifie la deuxième instruction 'if', puis 'elif' et ensuite il passe à 'else' et imprime cette instruction car il n'y avait aucune correspondance auparavant.

if(age >= 20 and age < 25):
    print("You are a young man now.")
elif(age >=25 and age < 30):
    print("You are a mature man now")
else:
    print("You are getting old")

Vous avez peut-être fait une faute de frappe ici:

if(age >= 20 and age < 25):
    print("You are a young man now.")

Vous essayez peut-être d'utiliser «si» au lieu de «elif» ici.

1
s.singh 12 avril 2018 à 19:57