0
votes

Comment ces codes sont-ils différents? Le second fonctionne en quelque sorte mais pourquoi le premier ne fonctionne-t-il pas?

J'ai fait ce code de calcul de la calculatrice et pour des raisons pour lesquelles je veux savoir, seule la première instruction s'ils se déroulent même si c'est faux. Le second fonctionne après avoir copié une réponse que j'ai trouvée ici, mais je ne comprends toujours pas, comment sont-ils différents?

Premier code: P>

while True:
    print("Welcome to my calculator")
    print("Type end")
    print("Pick one of the options: ")
    print("Add, Sub, Div, Mul")
    user_input1 = input()
    if user_input1 == "end":
        break
    user_input2 = int(input("Select the first number. \n"))
    user_input3 = int(input("Select the second number. \n"))
    if user_input1 == ("Add") or user_input1 == ("add"):
        answer = user_input2 + user_input3
        print(answer)
    elif user_input1 == ("Sub") or user_input1 == ("sub"):
        answer = user_input2 - user_input3
        print(answer)
    elif user_input1 == ("Div") or user_input1 == ("div"):
        answer3 = user_input2 / user_input3
        print(answer3)
    elif user_input1 == ("Mul") or user_input1 == ("mul"):
        answer4 = user_input2 * user_input3
        print(answer4)
    else:
        print("rip")


0 commentaires

4 Réponses :


0
votes

Cela ne fait pas ce que vous semblez penser qu'il fait:

if user_input1 in ("Add", "add"):


0 commentaires

0
votes

La différence est votre utilisation de la déclaration ou . En Python 3, tous les nombres et chaînes non nuls ont vraie valeurs de vérité, alors disant user_input1 == ("Ajouter") ou ("Ajouter") est la même chose Comme disant user_input1 == ("Ajouter") ou true , qui est toujours vrai . .

Aussi votre tandis que est le mauvais indençant, il semble donc ne rien faire. Est-ce destiné?


0 commentaires

0
votes

Lorsque vous faites user_input1 == ("Ajouter") ou ("Ajouter") Il évalue séparément les deux côtés du == , donc il va donc faire (" Ajouter ") ou (" Ajouter ") qui ne conservera que la première valeur non vide dans ce cas" Ajouter ". C'est pourquoi vous devez faire les évaluations séparément:
user_input1 == ("Ajouter") ou user_input1 == ("Ajouter")

Un moyen d'éviter que ceci est de mettre tous les casquettes comme ceci:
user_input1.upper () == ('Ajouter')


0 commentaires

0
votes

En réalité, la seconde réponse est

while True:
print("Welcome to my calculator")
print("Type end")
print("Pick one of the options: ")
print("Add, Sub, Div, Mul")
user_input1 = input()
if user_input1 == "end":
    break
user_input2 = int(input("Select the first number. \n"))
user_input3 = int(input("Select the second number. \n"))
if user_input1 == ("Add") or user_input1 == ("add"):
    answer = user_input2 + user_input3
    print(answer)
elif user_input1 == ("Sub") or user_input1 == ("sub"):
    answer = user_input2 - user_input3
    print(answer)
elif user_input1 == ("Div") or user_input1 == ("div"):
    answer3 = user_input2 / user_input3
    print(answer3)
elif user_input1 == ("Mul") or user_input1 == ("mul"):
    answer4 = user_input2 * user_input3
    print(answer4)
else:
    print("rip")


0 commentaires