TP1-PROG-05 - Les tests conditionnels
Contents
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)#
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.