1
votes

Comment récupérer les valeurs de la condition if else?

J'essaie d'obtenir un code en utilisant la condition if else Je souhaite prendre des valeurs de la condition if else.

Actuellement, si la condition fonctionne, ne fonctionne pas pour la condition else.

mname=input("Enter  name: ")
    m=[]

        if mname=="CS1TFD22" or "cs1tfd22":
            mcode='CS122S003'
            if l1l2=="NULL":
                icode = 'CS122S003d13_mh_'
            elif l1l2!="NULL":
                icode = 'CS122S003d13_L1_mh_'

        else:
            for i in mname:
                m.append(i)

            mcode = 'CS1'+m[5]+m[6]+'S003'
            if l1l2=="NULL":
                icode='CS1'+m[5]+m[6]+'S003d113_mh_'
            elif l1l2 != "NULL":
                icode = CS1'+m[5]+m[6]+'S003d13_L1_mh_'

        print(mcode,icode)


4 commentaires

Ceci est certainement faux si mname == "CS1TFD22" ou "cs1tfd22": , devrait être si mname dans ("CS1TFD22", "cs1tfd22"):


Double possible de Comment tester plusieurs variables par rapport à une valeur?


Que doit faire le code? Veuillez également inclure cette explication dans votre code!


Corrigez votre première instruction if comme celle-ci if mname == "CS1TFD22" ou mname == "cs1tfd22":


4 Réponses :


1
votes

Au lieu de

 if mname=="CS1TFD22" or mname=="cs1tfd22":

utilisez

if mname=="CS1TFD22" or "cs1tfd22":


2 commentaires

ou vous pouvez également utiliser casefold ()


c'est correct. "cs1tfd22" prend toujours la valeur True, donc la condition else n'est jamais atteinte



2
votes

Votre instruction if évalue toujours vrai, car vous évaluez le vrai / faux logique d'une chaîne. Vous devez utiliser

if mname in ("CS1TFD22","cs1tfd22"):

ou

if mname=="CS1TFD22" or mname=="cs1tfd22":


2 commentaires

Votre jamais quel caractère serait majuscule ou minuscule. Il est donc préférable d'utiliser casefold ()


En fait, je n'ai même pas remarqué qu'il s'agissait de la même chaîne dans un cas différent! Dans ce cas oui, il faut absolument utiliser casefold ()



1
votes

Quelques erreurs dans votre code

  1. Vous vérifiez deux conditions ou non par si mname == "CS1TFD22" ou "cs1tfd22": , mais par si mname == "CS1TFD22" ou mname == "cs1tfd22": , vous pouvez également simplifier cela en faisant if mname.lower () == "cs1tfd22": .

  2. Vous n'avez pas besoin du elif supplémentaire dans si l1l2 == "NULL": , seulement else ferait l'affaire.

  3. Vous avez manqué un guillemet simple dans icode = CS1 '+ m [5] + m [6] +' S003d13_L1_mh_ '
  4. Vous n'avez défini li2 nulle part, vous ne savez pas d'où vous le prenez, donc je le prends comme entrée dans mon code

Le code avec tous ces problèmes pourrait ressembler à ceci

Enter name: cs1tfd22
Enter l1l2:  NULL
CS122S003 CS122S003d13_mh_

Enter name: abcdefgh
Enter l1l2:  NULL
CS1fgS003 CS1fgS003d113_mh_

Enter name: xyzabcd
Enter l1l2:  HELLO
CS1cdS003 CS1cdS003d13_L1_mh_

Certaines sorties de votre code le seront.

mname=input("Enter name: ")
l1l2=input("Enter l1l2")
m=[]

#Convert mname to lower case and then compare
if mname.lower() == 'cs1tfd22':
    mcode='CS122S003'

    #If-else case 1
    if l1l2=="NULL":
        icode = 'CS122S003d13_mh_'
    else:
        icode = 'CS122S003d13_L1_mh_'

else:
    for i in mname:
        m.append(i)
    mcode = 'CS1'+m[5]+m[6]+'S003'

    # If-else case 1
    if l1l2=="NULL":
        icode='CS1'+m[5]+m[6]+'S003d113_mh_'
    else:
        icode = 'CS1'+m[5]+m[6]+'S003d13_L1_mh_'

print(mcode,icode)


9 commentaires

`aussi vous pouvez simplifier cela en faisant si mname.lower () ==" CS1TFD22 ":` c'est faux, devrait être mname.upper ()


Mince! Je l'ai mis correctement dans le code mais incorrectement dans l'exemple! Je les ai corrigés aux deux endroits! merci @Netwave Veuillez jeter un coup d'oeil à nouveau et si cela semble bon, veuillez envisager de voter pour


c'est ok maintenant, gj :)


Qu'est-ce que gj! Je ne sais pas ça!


Aah putain! J'apprends toujours les ficelles de SO, donc tout commentaire est toujours apprécié @Netwave Surtout d'un utilisateur à haute réputation comme vous :)


Pas vraiment haut, je suis assez loin des vraies bêtes ici. J'apprends aussi mon chemin;)


Eh bien 3 fois alors la mienne aussi, donc tu es une bête pour moi aussi lol;)


utilisez plutôt casefold ()


Eh bien, le bas et le boîtier fonctionneraient de la même manière dans ce scénario, donc l'un ou l'autre peut être utilisé



0
votes
  • Vous devez définir la variable l1l2.
  • Utilisez else à la place de elif.
  • N'oubliez pas de marquer avant CS1 à la dernière ligne.

    mname=input("Enter  name: ")
    m=[]
    l1l2=input("Enter  l1l2: ")
    
    if mname=="CS1TFD22" or "cs1tfd22":
        mcode='CS122S003'
        if l1l2=="NULL":
            icode = 'CS122S003d13_mh_'
        else:
            icode = 'CS122S003d13_L1_mh_'
    else:
        for i in mname:
            m.append(i)
    
        mcode = 'CS1'+m[5]+m[6]+'S003'
        if l1l2=="NULL":
            icode='CS1'+m[5]+m[6]+'S003d113_mh_'
        else:
            icode = 'CS1'+m[5]+m[6]+'S003d13_L1_mh_'
    
    print(mcode,icode)
    

0 commentaires