Les booléens

Une table de vérité.

a, b et c désignent trois booléens. Dresser la table de vérité de (a and b) or c :

  1. à la main,
  2. puis à l'aide d'un programme python.

Table de ( a and b ) or c
abca and b(a and b) or c
00000
00101
01000
01101
10000
10101
11011
11111

Code python pour générer la table :


for a in (0,1) :
	for b in (0,1) :
		for c in (0, 1) :
			print( " ({} and {}) or {} = {}.".format(a,b,c,(a and b) or c ) )
(0 and 0) or 0 = 0.
 (0 and 0) or 1 = 1.
 (0 and 1) or 0 = 0.
 (0 and 1) or 1 = 1.
 (1 and 0) or 0 = 0.
 (1 and 0) or 1 = 1.
 (1 and 1) or 0 = 1.
 (1 and 1) or 1 = 1.

Une autre table de vérité.

a, b et c désignent trois booléens. Dresser la table de vérité de a and (b or c) :

  1. à la main,
  2. puis à l'aide d'un programme python.

Table de a and ( b or c )
abcb or ca and (b or c)
00000
00110
01010
01110
10000
10111
11011
11111

Code python pour générer la table :


for a in (0,1) :
	for b in (0,1) :
		for c in (0, 1) :
			print( " {} and ({} or {}) = {}.".format(a,b,c,a and (b or c) ) )
0 and (0 or 0) = 0.
0 and (0 or 1) = 0.
0 and (1 or 0) = 0.
0 and (1 or 1) = 0.
1 and (0 or 0) = 0.
1 and (0 or 1) = 1.
1 and (1 or 0) = 1.
1 and (1 or 1) = 1.

Devinette.

Quels seront les affichages dans les cas suivants ?


def v() :
	print("A")
	return True
	
def f() :
	print("B")
	return False
	
	
print("Affichage 1 :  ")
f() or v()

print("Affichage 2 :  ")
v() or f()

print("Affichage 3 :  ")
f() and v()

print("Affichage 4 : ")
v() and f()

 
Affichage 1 :  
B
A
Affichage 2 :  
A
Affichage 3 :  
B
Affichage 4 : 
A
B

Python n'évalue que le premier booléen s'il peut en déduire la valeur de l'expression globale. Dans certains cas, la seconde fonction ne sera donc pas exécutée.

  • Affichage 1 : comme f() vaut False, le second booléen de l'expression doit être évalué pour que la valeur de l'expression soit connue puisque "false or false = false" tandis que "false or true = true".
  • Affichage 2 : comme v() vaut True, le second booléen de l'expression n'est pas évalué, l'expression globale vaut nécessairement True puisque "true or false = true" et "true or true = true".
  • Affichage 3 : comme f() vaut False, le second booléen de l'expression n'est pas évalué, l'expression globale vaut nécessairement False puisque "false and false = false" et "false and true = false".
  • Affichage 4 : comme v() vaut True, le second booléen de l'expression doit être évalué pour que la valeur de l'expression soit connue puisque "true and false = false" tandis que "true and true = true".