Logique avec Python

Découvrir l’algèbre de Boole avec Python
mercredi 5 septembre 2012
par  Nathalie CARRIÉ

- Qu’est-ce qu’un booléen ?
- Expressions booléennes
- Opérateurs relationnels ou de comparaison
- Les 3 opérateurs logiques : not, or, and
- Aller plus loin en logique : implication, équivalence et ou exclusif
(avec application en cryptographie)
- Mini-projet

Qu’est-ce qu’un booléen ?

Voir la page sur Wikipédia

C’est une variable qui ne peux prendre que deux valeurs : VRAI ou FAUX.
En Python, le type d’une telle variable est bool, les deux valeurs possibles sont True ou False.

Expressions booléennes

Une expression booléenne a deux valeurs possibles : True ou False.
Python attribue à une expression booléenne la valeur False si c’est :
- la constante False
- la constante None
- une séquence ou une collection vide
- une donnée numérique de valeur 0. Tout le reste vaut True.

>>> type(False)
<class 'bool'>
>>> type(True)
<class 'bool'>
>>> False
False
>>> bool(None)
False
>>> bool(' ')
True
>>> bool('')
False
>>> bool(0)
False
>>> bool(156.87)
True

Opérateurs relationnels ou de comparaison

Ce sont les opérateurs == ,  != , > , >= , < et <=.

* Illustration pour x = 7 et y = 17

Opérateur Expression Signification Valeur
== x == y Égal 0 (faux)
 != x  != y Non égal 1 (vrai)
> x > y Plus grand que 0
 < x < y Plus petit que 1
>= x >= y Plus grand ou égal à 0
<= x <= y Plus petit ou égal à 1
is x is y est le même objet 0
is not x is not y n’est pas le même objet 1

Cela donne dans le shell de Python :

>>> x=7
>>> y=17
>>> x==y
False
>>> x!=y
True
>>> x>y
False
>>> x>=y
False
>>> x<y
True
>>> x<=y
True
>>> x is y
False
>>> x is not y
True


* Illustration avec deux chaînes de caractères

>>>a='encyclopédie1'
>>>b='encyclopédie2'
>>>a==b
False
>>>len(a)
13
>>>a[:12]==b[:12]
True

Exercices Python

1/ Écrire un programme dont la sortie dans le shell de Python est la suivante :

>>>Entrez un entier naturel : 45
>>>Entrez un second entier naturel : 215
>>>
>>>    x==y a pour type <class 'bool'>
>>>
>>>    x==y est un booléen : il est soit vrai, soit faux
>>>
>>>x est différent de y donc la valeur du booléen est : False

2/ Écrire un programme qui dira si
- un nombre x appartient à l’intervalle [a, b]
- un nombre x appartient à l’intervalle ]a, b[ U [c, d]
- un nombre x appartient à l’intervalle [a, b[ ∩ ]c, d]

3/ Écrire un programme qui affiche Bon anniversaire ! si nous sommes à la date de votre anniversaire, Bonne journée sinon.

Les 3 opérateurs logiques

Voir sur Wikibooks

Les expressions avec un opérateur logique sont évaluées à True ou False.

* Le NON (négation, contraire)
p étant un booléen,
NON p = 1 - p
En Python, on appelle l’instruction not.
(NON p est noté en logique ¬p)

>>> 2<1
False
>>> not 2<1
True

Table de vérité : retrouver celle de NON p à l’aide de Python.

p NON p
VRAI FAUX
FAUX VRAI

Correction en Python :

>>> P=[True,False]
>>> for p in P:
        print(p,not p)
True False
False True


* Le OU logique (disjonction)

p et q étant deux booléens,
p or q
vaut True si p vaut True. Si p est False, l’expression est évaluée à la valeur booléenne de q
(si p est faux, retourne q, sinon retourne p).
(p OU q est noté en logique p ∨ q)

>>> 8<9
True
>>> 2<1
False
>>> (8 < 9) or (2 < 1)
True

Retrouver à l’aide de Python la table de vérité d’une disjonction :

p q p OU q
VRAI VRAI VRAI
VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX

* Le ET logique (conjonction)

p and q
vaut False si p est False. Si p est True, l’expression est évaluée à la valeur booléenne de q
(si p est faux, retourne p, sinon retourne q).
(p ET q est noté en logique p ∧ q)

>>> 8<9
True
>>> 2<1
False
>>> (8 < 9) and (2 < 1)
False
>>> x=36
>>> (x > 13) and (x < 27)
False
>>> x=20
>>> (x > 13) and (x < 27)
True

Retrouver à l’aide de Python la table de vérité d’une conjonction :

p q p ET q
VRAI VRAI VRAI
VRAI FAUX FAUX
FAUX VRAI FAUX
FAUX FAUX FAUX

Aller plus loin en logique : implication, équivalence et ou exclusif

* Implication logique

L’implication logique p ⇒ q est le booléen : NON p OU q

- Dresser à l’aide de Python la table de vérité de l’implication logique.
- Écrire une fonction implique(p,q) en Python qui retourne NON p OU q, p et q étant deux booléens.

* Équivalence logique

L’équivalence logique p ⇔ q est le booléen : (p ⇒ q) ET (q ⇒ p)

- Dresser à l’aide de Python la table de vérité de l’équivalence logique.
- Écrire une fonction equivalence(p,q) en Python qui retourne (p ⇒ q) ET (q ⇒ p), p et q étant deux booléens.


* Le OU exclusif (XOR) :

soit p, soit q, mais pas les deux à la fois.

Le OU exclusif (noté XOR ou ⊕) p XOR q est le booléen : (p OU q) ET NON (p ET q).

Retrouver à l’aide de Python la table de vérité du OU exclusif :

p q p XOR p
0 0 0
0 1 1
1 0 1
1 1 0

Voir une application en cryptographie

Questions :
- Quel serait le message en français envoyé du futur dans le film « Le code Andromède » s’il était codé à l’aide de la clé de 7 bits K=1001110 et du OU exclusif ? [1]
- Écrire une fonction xor(p,q) en Python qui retourne soit p (sous-entendu p Vrai), soit q (sous-entendu q Vrai) mais pas les deux, p et q étant deux booléens.

Récapitulatif :
Voir sur Wikipédia l’article Fonction logique

Mini-projet

À rendre par groupe.

- Écrire un programme Python qui dresse les tables de vérité de NON p, p OU q, p ET q telles qu’elles sont affichées dans ce tableau :

NON p
p OU q
NONp
pOUq
p ET q
pETq

Annexe : formatage d’une chaîne de caractères : lire Apprendre à programmer avec Python3 de Gérard Swinnen page 158 : Formatage des chaînes de caractères.

- Découverte des propriétés de l’Algèbre de Boole
p et q sont deux booléens.
Démontrer à l’aide d’un programme Python que :

  • Règles d’addition (le OU est noté +)
    p + 0 = p
    p + 1 = 1
    p + p = p
    p + NON p = 1
  • Règles de multiplication (le ET est noté . )
    p . 0 = 0
    p . 1 = p
    p . p = p
    p . NON p = 0
  • Commutativité
    p . q = q . p
  • Associativité
    p . ( q + r ) = p . q + p . r
  • Les lois de MORGAN
    p et q sont deux booléens.
    Démontrer à l’aide d’un programme Python que :
    NON (p OU q) = NON p ET NON q
    NON (p ET q) = NON p OU NON q
  • Vérifier que (p ⇒ q) et (NON q ⇒ NON p) ont même table de vérité.
  • Tautologie
    p, q, r sont trois booléens.
    Vérifier que [(p ⇒ q) ET (q ⇒ r)] ⇒ [p ⇒ r] est toujours vrai.
    C’est la base des raisonnements en chaîne en mathématiques.


Commentaires

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 8 février 2017, 14h-18h, campus du Tampon, amphi 120 B
- Mercredi 8 mars 2017, 14h-18h, PTU, Saint-Denis, salle S23.6
- Mercredi 12 avril 2017, 14h-18h, campus du Tampon
- Mercredi 3 mai 2017, 14h-18h, PTU, Saint-Denis, salle S23.6
- Mardi 13 juin 2017, 14h-18h, campus du Tampon
- Mercredi 14 juin 2017, 14h-18h, PTU, Saint-Denis, salle S23.6

Semaine des mathématiques

Du 23 mars au 4 avril 2017 dans l’académie de la Réunion.


Brèves

Travailler à plusieurs

lundi 19 décembre 2016

Les enseignements d’exploration au lycée imposent aux enseignants de travailler ensemble. Chantal Tuffery-Rochdi a analysé dans sa thèse les pratiques des enseignants de MPS (méthodes et pratiques scientifiques). Elle répond aux questions des Cahiers pédagogiques.

Un document sur Eduscol

mardi 19 mai 2015

Un document clarifiant bien la façon dont les mêmes concepts vivent en mathématiques et dans les sciences « exactes » les utilisant, publié par Eduscol en octobre 2014. Citons-les :
« Le document proposé ci-dessous s’adresse aux professeurs de mathématiques, physique-chimie et sciences de l’ingénieur intervenant dans le segment [Bac-3 ; Bac+3]. Il vise à les informer des différences de présentation et d’interprétation qui sont faites de certains concepts mathématiques dans les autres disciplines. Ces éclaircissements peuvent contribuer à harmoniser et à clarifier l’utilisation de ces notions auprès des élèves. »

Les métiers des mathématiques et de l’informatique

dimanche 22 mars 2015

Une brochure de l’ONISEP réalisée à l’initiative des cinq sociétés savantes, Femmes & Mathématiques, Société informatique de France, Société française de statistique, Société de mathématiques appliquées et industrielles, Société mathématique de France, représentant l’ensemble de la communauté française d’informatique et de mathématiques.

Histoire de la comptabilité

vendredi 28 décembre 2012

Sur ce site (en anglais) dédié à la comptabilité, on trouve des informations intéressantes sur l’histoire et les pratiques de ce domaine, qui peuvent être utiles aux professeurs enseignant des mathématiques financières (et aussi aux autres...).

La CGE et la réforme des lycées

lundi 16 janvier 2012

La Conférence des Grandes Écoles publie 19 préconisations pour la réforme du lycée.

Sur le Web : Les 19 préconisations

Pratique des mathématiques en série STD2A

lundi 16 janvier 2012

Le site de l’IGEN offre des recommandations et des ressources pour enseigner les mathématiques en série STD2A. Les thèmes abordés (couleurs et nuances de gris, arcs et architecture, jeux vidéos, photo et tableur, perspectives parallèles...) sont de nature à donner aussi des idées d’activités aux enseignants des autres séries !

En cheminant avec Kakeya

lundi 16 janvier 2012

Un livre (à télécharger) de Vincent Borelli et Jean-Luc Rullière qui présente le calcul intégral et la dérivation en s’appuyant sur la question de Kakeya. Pour les lycéens, les étudiants et tous les esprits curieux qui souhaitent voir les mathématiques sous un jour différent.

Sur le Web : Livre à télécharger

Bicentenaire Galois

lundi 12 septembre 2011

À l’occasion du bicentenaire de la naissance d’Évariste Galois (1811-2011), l’Institut Henri Poincaré et la Société mathématique de France organisent un ensemble de manifestations et proposent un site contenant diverses ressources documentaires susceptibles d’intéresser les enseignants.

Statistiques

Dernière mise à jour

jeudi 23 février 2017

Publication

732 Articles
Aucun album photo
125 Brèves
11 Sites Web
126 Auteurs

Visites

118 aujourd'hui
741 hier
1930883 depuis le début
16 visiteurs actuellement connectés