if-then-else

TP1-PROG-05 - Les tests conditionnels#

Instruction conditionnelle#

la structure est la suivante : SI … ALORS … SINON

En python :

if condition :
   instruction1
else:
   instruction2

La condition est un test. Un test compare deux valeurs et retourne VRAI ou FAUX. Par exemple :

  • si la variable a est plus grand que 4 alors …

  • si la chaîne de caractères prenom est égal à ‘Caroline’ alors…

Que l’on traduit en Python par :

if a > 4 :

et

if prenom == 'Caroline':

Attention à la notation, le mot en français “ALORS” se traduit par les deux points.

Si un test est vrai, alors il existe son opposé qui est faux. Et vice-versa !

  • le test “si la variable a est plus grand que 4” est vrai, alors l’opposé est “la variable a est plus petite ou égale à 4”

  • le test “si la chaîne de caractères prenom est égal à ‘Caroline’” est vrai, alors l’opposé est “la chaîne de caractères prenom n’est pas égal à ‘Caroline’”

En python cela se traduit par le mot-clef else.

if prenom == 'Caroline':
   instruction...
else:
   autre instruction

Il est possible d’imbriquer plusieurs tests

Exercice 1#

Ecrire un programme qui vérifie qu’un nombre est pair (ou impair)

Exercice 2#

Ecrire un programme qui vérifie qu’un nombre est pair ET divisible par 5

Plusieurs conditions dans un test : elif et opérateurs logiques and, or#

Lorsqu’il y a plusieurs conditions à remplir pour un test conditionnel, alors on peut utiliser les mot-clefs elif ou les opérateurs logiques or et and

La clause elif teste une nouvelle condition si la première (if) est fausse. Si cette condition est fausse, alors Python pousuit sur else:

if condition :instruction
elif condition :instruction
else :instruction

S’agissant des opérateurs logiques :

Si un test requiert que deux tests soient vrais en même temps, on utilise and :

if condition1 and condition2 :
    instruction

Si un test requiert que qu’un des deux tests soient vrais, alors on utilise or:

if condition1 or condition2 :
    instruction

Exercice 3#

Ecrire un programme qui vérifie qu’un nombre est divisible par 3 et par 7 en utilisant deux conditions dans un seul test.

Exercice 4 La Piscine (tiré du concours Castor Informatique)#

castor piscine

Analysons les conditions d’entrée:

  • Si la personne est âgée de 8 ans ou plus

  • Si la personne a moins de 8 ans, alors elle doit être accompagnée par une personne de 10 ans ou plus

Consigne :

  • Dessinez l’algorigramme

  • Ecrivez le programme en Python correspondant

Exercice 5 (pour aller plus loin)#

  • Ajoutez une question de type philosophie: “La grande question sur la vie, l’univers et le reste” dont la réponse est : A vous de trouver

  • Ajoutez une nouvelle catégorie de question de type psychologie en implémentant une nouvelle fonction quizz_psycho() sur le même modèle que les 2 autres.

En modifiant le code suivant

def quizz_info():
    r = input("Qui est le meilleur prof: \n 1 : M. Keller \n 2: un autre ... \n Votre réponse:")
    if r == '1':
        print("Bonne réponse")
    else:
        print("Mauvaise réponse")

def quizz_philo():
    r = input("quizz philo")
    

print("Quizz simple")
print("Jouons ? C'est parti...")
reponse = ''
while reponse != 'q':
    reponse = input("Choisissez votre question: \n 1: informatique \n 2: philo \n Votre réponse ('q' pour quitter):")
    if (reponse == '1'):
        quizz_info()
    elif (reponse == '2'):
        quizz_philo()
    elif (reponse == 'q'):
        print("Vous avez décidé de quitter")
    else:
        print(reponse,"invalide. Tapez 1 ou 2 ou q pour quitter")
Quizz simple
Jouons ? C'est parti...
---------------------------------------------------------------------------
StdinNotImplementedError                  Traceback (most recent call last)
Input In [1], in <cell line: 15>()
     14 reponse = ''
     15 while reponse != 'q':
---> 16     reponse = input("Choisissez votre question: \n 1: informatique \n 2: philo \n Votre réponse ('q' pour quitter):")
     17     if (reponse == '1'):
     18         quizz_info()

File ~/.local/lib/python3.9/site-packages/ipykernel/kernelbase.py:1174, in Kernel.raw_input(self, prompt)
   1167 """Forward raw_input to frontends
   1168 
   1169 Raises
   1170 ------
   1171 StdinNotImplementedError if active frontend doesn't support stdin.
   1172 """
   1173 if not self._allow_stdin:
-> 1174     raise StdinNotImplementedError(
   1175         "raw_input was called, but this frontend does not support input requests."
   1176     )
   1177 return self._input_request(
   1178     str(prompt),
   1179     self._parent_ident["shell"],
   1180     self.get_parent("shell"),
   1181     password=False,
   1182 )

StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.