« Programmation Python/Booléens » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 103 :
Les deux lignes suivantes, <code>print(8, not (a == 7 and b == 6))</code> et <code>print(9, not a == 7 and b == 6</code>, montrent que les parenthèses peuvent être utilisées pour regrouper des expressions et forcer l’évaluation d'une partie en premier. Notez que les parenthèses ont changé l'expression de "faux" à "vrai". La raison est que les parenthèses ont forcé le <code>not</code> à s'appliquer à toute l'expression au lieu de seulement la partie <code>a == 7</code>.
 
== bool() ==
== Note sur les opérateurs booléens ==
Explications : laLa valeur booléenne d'une variable "x" peut être obtenue avec <code>bool(x)</code>. Voici la table de vérité selon le type de la variable :
{{attention|1=<code>x == ('a' or 'b')</code> ne vérifie pas si <code>x</code> est équivalent aux caractères <code>'a'</code> ou <code>'b'</code>, mais au résultat de leur expression booléenne.}}
 
Exemple :
<source lang=python>
>>>''' 'a' == ('a' or 'b')'''
True
>>>''' 'b' == ('a' or 'b')'''
False
>>>''' 'a' == ('a' and 'b')'''
False
>>>''' 'b' == ('a' and 'b')'''
True
</source>
 
Explications : la valeur booléenne d'une variable "x" peut être obtenue avec <code>bool(x)</code>. Voici la table de vérité selon le type de la variable :
{| class="wikitable"
|-
Ligne 136 ⟶ 122 :
|}
 
== Note sur les opérateurs booléens ==
Now it is possible to understand the perplexing results we were getting when we tested those boolean expressions before. Let's take a look at what the interpreter "sees" as it goes through that code:
{{attention|1=<code>x == ('a' or 'b')</code> n'est pas équivalent à <code>x == 'a' or x == 'b'</code>. En effet, cela ne vérifie pas si <code>x</code> est équivalent aux caractères <code>'a'</code> ou <code>'b'</code>, maiscar aul'expression résultatbooléenne des'arrête leuravant expressionla booléennefin par ''short-circuit evaluation''.}}
 
Exemple :
'''First case:'''
<source lang=python>
>>>''' 'a' == ('a' or 'b')''' # Look at parentheses first, so evaluate expression "('a' or 'b')"
>>>''' 'a' == ('a' or 'b')'''
# 'a' is a nonempty string, so the first value is True
True
# Return that first value: 'a'
>>>''' 'b' == ('a' or 'b')'''
>>>''' 'a' == 'a' ''' # the string 'a' is equivalent to the string 'a', so expression is True
False
>>>''' 'a' == ('a' and 'b')'''
False
>>>''' 'b' == ('a' and 'b')'''
True
</source>
 
Détails de l'exemple :
>>> 'a' == ('a' or 'b') # 'a' = True, comme 'a' = 'a', on n'évalue pas 'b'
True
 
'''Second case:'''
>>>''' 'b' == ('a' or 'b')''' # Look at parentheses first, so evaluate expression "('a' or 'b')"
# 'a' is a nonempty string, so the first value is True
# Return that first value: 'a'
>>>''' 'b' == 'a' ''' # the string 'b' is not equivalent to the string 'a', so expression is False
False
 
'''Third case:'''
>>>''' 'a' == ('a' and 'b')''' # Look at parentheses first, so evaluate expression "('a' and 'b')"
# 'a' is a nonempty string, so the first value is True, examine second value
# 'b' is a nonempty string, so second value is True
# Return that second value as result of whole expression: 'b'
>>>''' 'a' == 'b' ''' # the string 'a' is not equivalent to the string 'b', so expression is False
False
 
'''Fourth case:'''
>>>''' 'b' == ('a' and 'b')''' # Look at parentheses first, so evaluate expression "('a' and 'b')"
# 'a' is a nonempty string, so the first value is True, examine second value
# 'b' is a nonempty string, so second value is True
# Return that second value as result of whole expression: 'b'
>>>''' 'b' == 'b' ''' # the string 'b' is equivalent to the string 'b', so expression is True
True
 
Ligne 172 ⟶ 168 :
Going back to those initial expressions, this is how you would write them out so they behaved in a way that you want:
 
>>>''' 'a' == 'a' or 'a' == 'b' '''
True
>>>''' 'b' == 'a' or 'b' == 'b' '''
True
>>>''' 'a' == 'a' and 'a' == 'b' '''
False
>>>''' 'b' == 'a' and 'b' == 'b' '''
False
 
Ligne 184 ⟶ 180 :
 
=== Exemples ===
'''password1.py'''
<source lang="python">
## This program asks a user for a name and a password.
Ligne 201 ⟶ 197 :
Sample runs
 
What is your name? '''Josh'''
What is the password? '''Friday'''
Welcome Josh
 
What is your name? '''Bill'''
What is the password? '''Money'''
I don't know you.