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)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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 : 10/10
.128013beqn,49vèi3mo5_txR;PhklpwTf(: cg.a=ry0FS6u/72)s18d050Y0c0q0I0k0x0V0E0F0x0I0V0V0J010q0k0y010406050V0Q0m0m0I0K0L040O0n0x0Q0?0n0e0E020I0m0y0t0E0s0c100K0d0Q0c0V050R0}0 11130{0y04051y1r1B0R1y0{0Y0k0i0+0-0/0;0v0k0G0v0x1P0v0q0_050$0b0x0c1K0.0:011O1Q1S1Q0q1Y1!1W0q0K1z0q0v0+160V0y0I0e0;0T011$1M010B0(0c0e1e0c1W1|1~231(261!290m2b040a0E0u0K0n0y0n0V0k191b0!1`0K0K0c0F2w1r2d0e1z0R1^2I1=1@1?1X0Y2f0;1S0e282t1W1H1J0,1%2S0k2U0e0n2Y1W0y2B1z2G2I2:0|1}1b2!242)0K100x0_0E0W2F2@0`2?2e2_1(2{2}2 0T321~342G2R01390I2~040E0l3d2H0{3g370;3j3l0E0g3p3f2@3h3v2 0o3z3r3B3t3i0n2|3k2 0P3G352^1L383L3a3m0S3Q3s3T3u3V3N3m0X3Z3I3#3K3M3w0h3+363-3D040W0M3=3S2#3.3W0W311s333H3?3~3^0W3c433e453}2`3%3l0W3o4b3q3R3C4g0_0W3y4k3A464f3/4p3F4s4d4n4w3_3P4z4m3J483Y4F3!474o3_3*4K3,4M4C0W3;4Q4u3U4C0T3{4W4e4Y3W0T422:4A4H4N0T4a4,4G3@4/4j4=4L4v4)4r4`4R4|3(0T4y4 4X3$4Z4E554%574)4J5a4B4)4P5f4.4Z4V5j4@4C0l4#5n4S3W0l4+444?5t3(0l4;331C2.1r2Y2L0Y1@2Q3J0F2*2l0Z1I1z2-0c2/5D4s055N0!5V56010w0_0!0B3z5y240z2 5,4{380B0_2)0e5;501(0^040C5{5$0e0_0I615b015~0U0D3G0E6d0E5-1(5(040k5+4s6f5=3u64663h5~6b4z6e6w6n5|0;6i2B0q0Q0K5`6m6g6A0F0_0N3k0V0c6c6e6I5%0_0c0)6P5X6o680_6u4,6x6R6Z6B0#6E6G2:6y5$0w6K040A0K1o3G064-3-6i5*6r3J5/3m713@5@040#753~5~606Y6z3i6q7e5$5~0f3z6:6763040b7a24696$446w6S6i6k7m6S7p657i676t6Q6(7y0_7A6H6Z7p7r7F6s6#7I6(6)7f6+6D6F7B6*6?6^6`6v7W6;0_6C6-7#7X6?6M6W6{6}3~6 0c6l2=6Z736f7R4H770n0Q7s5}0_7d7~7f7D870;7k7:620_7Q8b7j0_6a7U7K6j7}337n3C7h8l7G7T7*7J6*7-6,7!7N7;0_7(6X6%7+676i6V7M6/7C8j8e6!047v4c7V8u3J7Y7/8G6;7%6_8K7w8M3h8$8F8R7$6L6N8,4c6|8q70823-808U0e840Q0p0c0r0,0Q2u8s3e6S7c918w5D6Z8g8(7o8T8~7b8n8X3q7x8C047.8;8t8S04858U9e9n2`6U0q9B899f047E8x7S047l9k8v045_9H5 9J8k9h7f690U9P8=8c9F9U8a9Y8i9S1a9*9J9L9,8y049#8h9l7q9U0U0U7^8|7|8U909D5?5^1a0p9Aa58f9Iab7g9K9U9$9x7O9m9M3J7u8p9t9v6.aj9(9.as9c9iadam3@0_aaaA9o9Vae8dae9j9%9-9Xax9Z8n9 4z8{9t8}aE5.5:aH775_959GaJaz9?9R9=aO8m9O9`9RaN2H9d9pap7X8D7Zaw2H8!aBav9:aH9)a(aGaW389ga-9@ai3ea 47ala*anaQ3Q0R5Z5U5Ebn0R5H1r0q5Jbs2O2J0I1Zbp5H1x5#672B0m0p0B0I0w0c0p0v0l0_1j1l1n1p0E9q2I1F1A040u0.0E2ybF11bS0*1}0K0?0F0Q1S0j2B0V0H1C34bq0#0%0)04.