Opérateurs booléens⚓︎

Certains opérateurs booléens tels que « \(et\) », « \(ou\) » et « \(non\) » existent de façon native en Python. Leurs tables de vérités sont rappelées plus bas.

Le but de cet exercice est d'écrire des fonctions mimant leur fonctionnement en n'utilisant que des tests if...elif...else.

Astuce

On rappelle que si a est un booléen, l'instruction if a == True: peut-être allégée en if a:.

Les seules structures autorisées dans cet exercice sont :

  • les tests simples :
🐍 Script Python
if booleen:
    ...
elif booleen:
    ...
else:
    ...
  • les tests imbriqués :
🐍 Script Python
if booleen_1:
    if booleen_2:
        ...
  • l'utilisation dans les tests de fonction déjà écrites. Par exemple :
🐍 Script Python
if non(booleen):
    ...

Contrainte

Il est donc interdit dans cet exercice d'utiliser les opérateurs booléens natifs de Python : not, and, or. De la même façon on ne comparera pas les valeurs à l'aide de ==, !=, >, ...

On s'interdira de la même façon d'utiliser la bibliothèque operator ainsi que des conversions telles que int(a)...

On demande d'écrire les fonctions suivantes :

  • non prend en argument le booléen a et renvoie False si a vaut True, True s'il vaut False ;
  • et prend en argument les booléens a et b et ne renvoie True que s'ils valent l'un et l'autre True ;
  • ou prend en argument les booléens a et b et renvoie True dès que l'un ou l'autre vaut True (ou les deux) ;
  • ou_exclusif prend en argument les booléens a et b et renvoie True si les deux arguments ont des valeurs différentes ;
  • non_ou prend en argument les booléens a et b et ne renvoie True que s'ils valent l'un et l'autre False. ;
  • non_et prend en argument les booléens a et b et ne renvoie False que s'ils valent l'un et l'autre True.
Exemples
>>> non(True)
False
>>> et(True, False)
False
>>> ou(True, False)
True
>>> ou_exclusif(True, True)
False
>>> non_ou(False, True)
False
>>> non_et(False, True)
True

La table de vérité de cet opérateur est :

a non(a)
False True
True False

La table de vérité de cet opérateur est :

a b et(a, b)
False False False
False True False
True False False
True True True

La table de vérité de cet opérateur est :

a b ou(a, b)
False False False
False True True
True False True
True True True

La table de vérité de cet opérateur est :

a b ou_exclusif(a, b)
False False False
False True True
True False True
True True False

La table de vérité de cet opérateur est :

a b non_ou(a, b)
False False True
False True False
True False False
True True False

La table de vérité de cet opérateur est :

a b non_et(a, b)
False False True
False True True
True False True
True True False
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5
.128013(lbsSetxph;rd45.f1890uma"ovTè7g,_F/R3=in 6k:)y q2Pc030h0a0b0s0H06080P0T060s08080G0t0b0H0d0t020J03080q0r0r0s0g0O02090u060q0-0u0I0P000s0r0d0f0P0E0a0`0g0Q0q0a08030D0@0_0{0}0=0d02031s1l1v0D1s0=0h0H0v0$0'0)0+0e0H0z0e061J0e0b0:030X07060a1E0(0*0t1I1K1M1K0b1S1U1Q0b0g1t0b0e0$10080d0s0I0+0R0t1W1G0t0l0Z0a0I180a1Q1=1@1|1Y1 1U220r2402040P0S0g0u0d0u080H13150V1:0g0g0a0T2p1l260I1t0D1.2B1+1-1,1R0h280+1M0I212m1Q1B1D0%1X2L0H2N0I0u2R1Q0d2u1t2z2B2(0?1?152T1}2Y0g0`060:0P0m2y2,0;2+272.1Y2:2=2@0R2`1@2|2z2K0t310s2?020P0F352A0=382 0+3b3d0P0i3h372,393n2@0j3r3j3t3l3a0u2;3c2@0K3y2}2-1F303D323e0y3I3k3L3m3N3F3e0n3R3A3T3C3E3o0o3Z2~3#3v020m0p3)3K2U3$3O0m2_1m2{3z3*3=3,0m343`363|3;2/3V3d0m3g423i3J3u470:0m3q4b3s3}463%4g3x4j444e4n3-3H4q4d3B3 3Q4w3S3~4f3-3Y4B3!4D4t0m3(4H4l3M4t0R3/4N454P3O0R3_2(4r4y4E0R414Z4x3+4$4a4(4C4m4W4i4-4I4/3W0R4p4=4O3U4Q4v4{4U4}4W4A504s4W4G554#4Q4M594*4t0F4S5d4J3O0F4Y3{4)5j3W0F4'2{1w2%1l2R2E0h1-2J3B0T2Z2e0U1C1t2$0a2'5t4j035D0V5L4|0t0L0:0V0l3r0P5o2/0l0:2Y0I3r5!1Y0/02055)4.300:0s5/4?5+0:0N0M3y0P5~5Z5:0+5U020H5X4j605^3m5=5@5S5,5|4q5 6h685S632u0b0q0g5(675*620T0:0C3c080a5}5 6s5T0:0a0!6z5N610t6e6A6i6j516D026m6o6q2(6O390L6u020w0g1i3y0J4!3#635W5Y6C0I5$020W6c6P5,5.6I693a6b6`6d0:0A6-6J0I0:076?395,5{6M6W3B6365726{74025?6~6@0:6f4Z6N5~6C7e666V6.75773B6L6g7q6h7s0:6S6p7g6k6Z6#6%7B7r6J6l0W6T7I6P6Y6v6x6H4Z6(7E026,6r736:0u0q7y3#6^7,3~6}2*6J5,717'7h7x7l785`7o3{7D7P0:7f7_5S7i7k7=6{7A7p7q7#7G6U2{7c6*7K6$7Y806B826;1M7u8h7w02767|7z7n7b816{7Q6n7H857U8k7M8c7O8C7F7R8F7v7P6Z6w6G6'6)3=6+0a8s368i3~7)0q0B0a0c0%0q2n8!2A6C7.8x3+7;5t7?707T3u7{896 027a7N8$1}8D7S8G8}027*7/1}8=8 6P7i6=8?3=9e8_7`7j9c5_027^8Q9n5'9p0+9l368u8w9f7}910N9s8t736E0b9w6K0:6_9C4y5%149L9y8:9I9o9j9d5`9G8#9A9T5`0N8V7#7%9t866:5'0B9b9Y9q9O9m868^9z8`9r8|9Q8v9'917 438B6k8N8E8g9$9W9v9?9x9N9L7i9=9P7-agae6|9Xak9k8{98a09B9_7m9E9*8p9,9H7h9/148)9Kan9U5R9g9{9V8aas9-aLa1aI7~7b8e8Oaa2A945;02adaq9Z5-ah9Ja29^9|9n88aw9D9#aZ9%aTay4w0D5P5K5ua~0D5x1l0b5zb32H2C0s1Tb05x1raK392u0r0B0l0s0L0a0B0e0F0:1d1f1h1j0Pa48:1y2|1s0S0(0P2rbg0{bt0#1?0g0-0T0q1M0x2u080k1w2|b10W0Y0!02.