Maison > développement back-end > Tutoriel Python > Pourquoi `a == x ou y ou z` est-il toujours évalué à True en Python ?

Pourquoi `a == x ou y ou z` est-il toujours évalué à True en Python ?

Linda Hamilton
Libérer: 2024-12-31 04:35:17
original
755 Les gens l'ont consulté

Why Does `a == x or y or z` Always Evaluate to True in Python?

L'erreur "a == x ou y ou z"

Lorsque vous essayez de comparer une variable à plusieurs valeurs, il est tentant d'utiliser Opérateurs logiques de Python, comme dans :

if a == x or y or z:  # Incorrect
Copier après la connexion

Cependant, cette expression sera toujours évaluée à True, quelle que soit la valeur de un. En effet, l'opérateur "ou" dans ce contexte ne se comporte pas comme prévu.

Comment fonctionne l'opérateur "ou"

L'opérateur "ou" de Python (|) sera évalué à True si l'un de ses opérandes est True. Ainsi, dans l'expression ci-dessus, puisque l'un des x, y ou z est toujours vrai (une valeur non vide est vraie en Python), l'expression est évaluée à vrai quelle que soit la valeur de a.

Façons correctes de comparer à plusieurs valeurs

Pour comparer correctement une variable à plusieurs valeurs, il existe plusieurs options :

  • Opérateurs "ou" explicites :

Utilisez des opérateurs "ou" explicites pour comparer chaque valeur séparément :

if a == x or a == y or a == z:  # Correct
Copier après la connexion
  • Ensembles ou Listes :

Créez un ensemble ou une liste de valeurs valides et utilisez l'opérateur "in" pour vérifier l'appartenance :

if a in {"Kevin", "Jon", "Inbar"}:  # Correct
Copier après la connexion
  • Expression du générateur et "any()":

Utilisez une expression génératrice avec "any()" pour vérifier explicitement chacun value :

if any(a == auth for auth in ["Kevin", "Jon", "Inbar"]):  # Correct
Copier après la connexion

Considérez les performances

Pour les performances, l'utilisation d'ensembles ou de listes avec l'opérateur "in" est généralement l'option la plus rapide. Les expressions génératrices utilisant "any()" sont les plus verbeuses et les plus lentes.

Exemple d'utilisation

Pour accorder l'accès uniquement aux utilisateurs autorisés :

authorized_names = {"Kevin", "Jon", "Inbar"}
name = input("Please enter your name: ")
if name in authorized_names:
    print("Access granted.")
else:
    print("Access denied.")
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal