/ / Pourquoi ce «n'est pas» si l'instruction fonctionne? - python, python-3.x

Pourquoi est-ce que ce n'est pas le cas si la déclaration fonctionne? - python, python-3.x

Ceci est mon code,

if diff != "1" or diff != "2" or diff != "3":
print("You need to pick either 1, 2 or 3n")

Pour une raison quelconque, le résultat est,

Pick a difficulty:
1) Easy
2) Medium
3) Hard
>> 2
You need to pick either 1, 2 or 3

Je veux que l'instruction if vérifie si la variable diff n'est pas égal à des chaînes 1, 2 et 3. Mais quand je mets soit 1, 2 ou 3, le message d’erreur indiquant quand diff n’est pas égal aux nombres est imprimé. Pourquoi cela se produit-il?

Réponses:

2 pour la réponse № 1

Pour appliquer la logique "pas n'importe lequel", vous voudrez vérifier s'il s'agit de l'un des résultats valides, puis inverser. (NI)

if not (diff == "1" or diff == "2" or diff == "3"):

Ou appliquer Le théorème de DeMorgan ce serait équivalent à "pas égal à 1 ET pas égal à 2 ET pas égal à 3"

if diff != "1" and diff != "2" and diff != "3":

bien sûr, le python a aussi le in et not in opérateur qui rend ce beaucoup plus propre:

if diff not in ("1", "2", "3"):

0 pour la réponse № 2

Vous devez utiliser et au lieu de ou. Si vous entrez 1, alors diff != "1" renvoie True.

Votre code devrait ressembler à ceci:

if diff != "1" and diff != "2" and diff != "3":
print("You need to pick either 1, 2 or 3n")