L'opérateur or en Python est un opérateur logique qui renvoie True si au moins un des opérandes s'évalue à True. C'est un opérateur binaire tapé comme le mot anglais "or" et est utilisé pour créer des expressions booléennes composées dans les instructions conditionnelles, les boucles et la logique des fonctions.
Syntaxe de base de l'opérateur or
L'opérateur or prend deux opérandes et évalue si au moins un est vrai.
condition1 or condition2 L'opérateur or renvoie True lorsque au moins un opérande est True. Il ne renvoie False que lorsque les deux opérandes sont False.
Exemple 1 : Expression booléenne de base
bool1 = 2 > 3 # False
bool2 = 2 < 3 # True
result = bool1 or bool2
print(result) True
Exemple 2 : Les deux sont False
bool1 = 2 > 3 # False
bool2 = 5 > 10 # False
result = bool1 or bool2
print(result) False
Lorsque les deux conditions sont False, l'opérateur or renvoie False.
Table de vérité pour l'opérateur or
Comprendre comment l'opérateur or fonctionne avec différentes combinaisons booléennes est essentiel.
| Condition 1 | Condition 2 | Résultat |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
L'opérateur or renvoie True lorsque au moins un opérande est True.
Exemple : Tous les cas de la table de vérité
# Case 1: True or True = True
if True or True:
print("Case 1: True") # This executes
# Case 2: True or False = True
if True or False:
print("Case 2: True") # This executes
# Case 3: False or True = True
if False or True:
print("Case 3: True") # This executes
# Case 4: False or False = False
if False or False:
print("Case 4: True")
else:
print("Case 4: False") # This executes Cas 1 : True Cas 2 : True Cas 3 : True Cas 4 : False
Combining Multiple Conditions
The and operator is commonly used to combine multiple comparison operations in conditional statements.
Example 1: Age and License Check
age = 25
has_license = True
if age >= 18 and has_license:
print("You can drive")
else:
print("You cannot drive") You can drive
Example 2: Number Range Check
number = 15
if number > 10 and number < 20:
print(f"{number} is between 10 and 20") 15 is between 10 and 20
Example 3: Multiple Conditions
a = 10
b = 10
c = -10
if a > 0 and b > 0:
print("The numbers are greater than 0")
if a > 0 and b > 0 and c > 0:
print("All numbers are greater than 0")
else:
print("At least one number is not greater than 0") The numbers are greater than 0 At least one number is not greater than 0
This example shows how and can chain multiple conditions together.
Évaluation en court-circuit
L'opérateur or utilise l'évaluation en court-circuit, s'arrêtant dès qu'il trouve une valeur truthy et n'évaluant pas les opérandes restants.
Exemple : Démontrer le court-circuit
def check_first():
print("First condition evaluated")
return False
def check_second():
print("Second condition evaluated")
return True
# Short-circuit in action
if check_first() and check_second():
print("Both are True")
else:
print("At least one is False") Première fonction appelée True
Notez que "Deuxième fonction appelée" n'est jamais imprimé car true_func() a renvoyé True, donc Python a ignoré l'évaluation de false_func(). Cette optimisation améliore les performances et évite les calculs inutiles.
Example 2: Avoiding Division by Zero
x = 0
y = 10
# Safe division check
if x != 0 and y / x > 2:
print("y/x is greater than 2")
else:
print("Cannot divide or condition not met") Cannot divide or condition not met
The short-circuit evaluation prevents the division by zero error because x != 0 is False, so y / x is never evaluated.
Using and with Boolean Variables
Boolean variables can be combined directly with the and operator without comparison operators.
Example 1: Direct Boolean Check
is_logged_in = True
has_permission = True
if is_logged_in and has_permission:
print("Access granted")
else:
print("Access denied") Access granted
Example 2: Multiple Boolean Flags
a = 10
b = 12
c = 0
if a and b and c:
print("All numbers have boolean value as True")
else:
print("At least one number has boolean value as False") At least one number has boolean value as False
In Python, 0 evaluates to False in boolean context, while non-zero numbers evaluate to True.
Enchaîner plusieurs opérations OR
Vous pouvez enchaîner plusieurs opérateurs or ensemble pour vérifier si une variable correspond à n'importe quelle valeur.
Exemple 1 : Enchaîner les opérateurs OR
attendance = 85
homework_score = 90
exam_score = 88
if attendance >= 80 and homework_score >= 85 and exam_score >= 85:
print("You passed the course with good grades")
else:
print("Requirements not met") Accès accordé
Exemple 2 : Meilleure alternative utilisant 'in'
password = "SecurePass123"
has_upper = any(c.isupper() for c in password)
has_lower = any(c.islower() for c in password)
has_digit = any(c.isdigit() for c in password)
min_length = len(password) >= 8
if has_upper and has_lower and has_digit and min_length:
print("Password is strong")
else:
print("Password does not meet requirements") Accès accordé
Example 3: Date Range Validation
year = 2024
month = 6
day = 15
if year > 2000 and month >= 1 and month <= 12 and day >= 1 and day <= 31:
print("Valid date")
else:
print("Invalid date") Valid date
Python 'and' vs Other Languages '&&'
Unlike languages like C, C++, Java, or JavaScript that use && for logical AND, Python uses the keyword and.
Python Syntax:
x = 5
y = 10
if x < y and y < 15:
print("Both conditions are True") Other Languages (JavaScript/Java/C++):
// This does NOT work in Python
if (x < y && y < 15) {
console.log("Both conditions are True");
} Important: Attempting to use && in Python will result in a SyntaxError. Always use the keyword and in Python.
# This will cause an error
# if x > 0 && y > 0: # SyntaxError
# print("Error!")
# Correct Python syntax
if x > 0 and y > 0:
print("Correct!") Combining and with or Operator
You can mix and and or operators in the same expression, but remember that and has higher precedence than or. Use parentheses to control evaluation order.
Example 1: Without Parentheses
age = 25
has_ticket = True
is_vip = False
# and has higher precedence than or
if age >= 18 and has_ticket or is_vip:
print("You can enter") You can enter
This evaluates as: (age >= 18 and has_ticket) or is_vip
Example 2: With Parentheses for Clarity
score = 75
extra_credit = 10
# Explicit grouping
if (score >= 70 and score < 80) or extra_credit >= 20:
print("Grade: B") Grade: B
Example 3: Complex Condition
temperature = 25
is_sunny = True
is_weekend = True
if (temperature > 20 and is_sunny) or is_weekend:
print("Good day for outdoor activities") Good day for outdoor activities
Cas d'utilisation courants
Cas d'utilisation 1 : Validation des entrées
username = "alice"
password = "password123"
email = "alice@example.com"
if len(username) > 0 and len(password) >= 8 and "@" in email:
print("Registration successful")
else:
print("Please check your input") Âge valide
Cas d'utilisation 2 : Valeurs par défaut
age = 22
citizen = True
registered = True
if age >= 18 and citizen and registered:
print("You are eligible to vote")
else:
print("You are not eligible to vote") Bonjour, Alice ! Bonjour, Invité ! Bonjour, Invité !
Cas d'utilisation 3 : Vérification des permissions
purchase_amount = 150
is_member = True
has_coupon = True
if purchase_amount > 100 and (is_member or has_coupon):
discount = 0.15
final_price = purchase_amount * (1 - discount)
print(f"You qualify for 15% discount. Final price: ${final_price}") Accès accordé Accès accordé Accès refusé
Use Case 4: Access Control
user_role = "admin"
is_authenticated = True
session_valid = True
if is_authenticated and session_valid and user_role == "admin":
print("Access granted to admin panel")
else:
print("Access denied") Access granted to admin panel
Use Case 5: Data Validation
data = [1, 2, 3, 4, 5]
if len(data) > 0 and all(isinstance(x, int) for x in data) and min(data) >= 0:
print("Data is valid")
else:
print("Invalid data") Data is valid
Nested Conditions vs and Operator
Using the and operator is often cleaner than nesting multiple if statements.
Nested Approach (Less Readable):
age = 25
income = 50000
if age >= 21:
if income >= 30000:
print("Loan approved")
else:
print("Insufficient income")
else:
print("Age requirement not met") Using and Operator (More Readable):
age = 25
income = 50000
if age >= 21 and income >= 30000:
print("Loan approved")
else:
print("Requirements not met") Loan approved
The second approach using and is more concise and easier to understand.
Erreurs courantes à éviter
Erreur 1 : Confondre OR avec AND
# Wrong - SyntaxError
# if x > 0 && y > 0:
# print("Both positive")
# Correct
if x > 0 and y > 0:
print("Both positive") Erreur 2 : S'attendre à un retour booléen
# Ambiguous - may not work as intended
if x > 5 and y > 3 or z < 10:
print("Condition met")
# Better - use parentheses
if (x > 5 and y > 3) or z < 10:
print("Condition met") Mistake 3: Checking Multiple Values Incorrectly
x = 5
# Wrong - doesn't work as expected
# if x == 3 or 5 or 7: # Always True!
# Correct
if x == 3 or x == 5 or x == 7:
print("x is 3, 5, or 7")
# Even better - use 'in'
if x in [3, 5, 7]:
print("x is 3, 5, or 7") Mistake 4: Not Considering Short-Circuit
# Potentially unsafe
# if len(my_list) > 0 and my_list[0] > 10: # Error if my_list doesn't exist
# Safe approach
my_list = []
if my_list and len(my_list) > 0 and my_list[0] > 10:
print("First element is greater than 10") Meilleures pratiques
Pratique 1 : Utiliser l'opérateur 'in' lors de la vérification de l'appartenance
# Clearer with parentheses
if (age >= 18 and age <= 65) and (has_license or has_permit):
print("Can drive") Pratique 2 : Tirer parti de l'évaluation en court-circuit
# Instead of this:
# if user.age >= 18 and user.has_account and user.verified and not user.banned:
# grant_access()
# Do this:
is_adult = user.age >= 18
has_valid_account = user.has_account and user.verified
not_banned = not user.banned
if is_adult and has_valid_account and not_banned:
print("Access granted") Pratique 3 : Utiliser des parenthèses pour les conditions complexes
# Put the most likely to fail condition first
def cheap_check():
return True
def expensive_operation():
return True
if cheap_check() and expensive_operation():
print("Both passed") Pratique 4 : Éviter de mélanger les opérateurs logiques et bit à bit
# Poor
# if a and b and c:
# do_something()
# Better
is_authenticated = True
has_permission = True
is_active = True
if is_authenticated and has_permission and is_active:
print("Action allowed") Essayez vous-même
Pratiquez ce que vous avez appris en modifiant le code ci-dessous. Essayez de changer les valeurs et les conditions pour voir différentes sorties !
// Cliquez sur "Exécuter le Code" pour voir les résultats
Sujets connexes
Questions fréquemment posées
Quelle est la différence entre 'or' et '||' en Python ?
Python utilise le mot-clé or pour les opérations OR logiques. Le symbole || est utilisé dans d'autres langages comme C, Java et JavaScript, mais il provoquera une SyntaxError en Python.
L'opérateur or évalue-t-il les deux conditions ?
Pas toujours. Python utilise l'évaluation en court-circuit—si la première condition est True, la deuxième condition n'est pas évaluée car le résultat est déjà connu comme étant True.
Puis-je utiliser or avec plus de deux conditions ?
Oui, vous pouvez enchaîner plusieurs conditions : if a or b or c or d:. Au moins une condition doit être True pour que l'expression s'évalue à True.
Quel est le précédence de or par rapport à and ?
L'opérateur and a une précédence plus élevée que or. Cela signifie que a or b and c est évalué comme a or (b and c). Utilisez des parenthèses pour plus de clarté.
Comment utiliser or pour les valeurs par défaut ?
Vous pouvez utiliser or pour fournir des valeurs par défaut : name = user_input or "Invité". Si user_input est falsy (vide, None, etc.), il utilisera "Invité".
Puis-je utiliser or avec des valeurs non booléennes ?
Oui. Python évalue les valeurs dans un contexte booléen. or renvoie la première valeur truthy, ou la dernière valeur si toutes sont falsy. Utilisez bool() si vous avez besoin d'un booléen explicite.