TDC1 : les conditions IF ... ELSE¶

L'objectif de ce notebook est de revoir assez rapidement la notion de condtion (test : si .... alors ... sinon ...)

1. Tests simples¶

La syntaxe en python est plutôt naturelle :

!!! note Tests simples

if condition :
    bloc d'instructions
else :
    bloc d'instructions

!!!

Remarque : la partie "sinon" (else) est facultative.


Exercice 1

Q1. Essayer d'exécuter le programme suivant avec diverses valeurs de n1 et de n2 et dire que est son rôle :

Réponse : Le rôle du programme suivant est ... à compléter

In [ ]:
n1 , n2 = 4, 5
if n1 > n2 :
    n1, n2 = n2, n1
print(n1,n2)

!!! info Information : permuter deux variables Pour comprendre le code précédent, on rappelle que la double affectation n1, n2 = n2, n1 permute le contenu des deux variables.

On aurait aussi pu utiliser une variable auxilaire ainsi :

aux = n1
n1 = n2
n2 = aux

!!!

Q2. On peut améliorer un peu le code précédent en affectant des entiers aléatoirement à n1 et n2. (On expliquera en détail le rôle de la première ligne un peu plus tard..., pas besoin de s'en occuper pour l'instant !)

In [ ]:
from random import randint
n1 , n2 = randint(0,100), randint(0,100)
if n1 > n2 :
    n1 , n2 = n2, n1
print(n1,n2)

Exécuter plusieurs fois le programme précédent pour voir si votre réponse à la question 1 se confirme.

Q3. Compléter le programme ci-dessous pour qu'il fasse la même chose que le programme de la question 2

In [ ]:
from random import randint
n1 , n2 = randint(0,100), randint(0,100)
if n1 < n2 :
    # à compléter
else :
    # à compléter

2. Tests imbriqués¶

On peut imbriquer plusieurs tests de la façon suivante :

!!! note Tests imbriqués

if condition 1 :
    bloc d'instructions 1
elif condition 2 : # cela signifie 'sinon si ...'
    bloc d'instructions 2
...
elif condtion n :
    bloc d'instructions n
else :
    bloc d'instructions

!!!

Remarque : chaque bloc d'instructions peut lui-même contenir des if.


Exercice 2

Q4. Compléter le programme ci-dessous qui doit afficher le plus grand des trois nombres n1, n2 et n3 qui ont été choisis aléatoirement entre 1 et 20 L'utilsation de la fonction max(...) est interdite dans cette question

In [ ]:
from random import randint
n1 , n2 , n3 = randint(1,20), randint(1,20), randint(1,20)

if n1 > n2 :
    # ... à completer...
    

print("Le plus grand nombre est :", ... à compléter...)

Q5. La technique utilisée précédemment est-elle facile à généraliser à 4 nombres ?

Réponse : ... à compléter ...


3. Avec des opérateurs logiques¶

!!! info Opérateurs logiques pour les conditions On a vu dans le cours comment faire des comparaisons avec <,>,==,!= etc... On peut également utiliser les opérateurs logiques and et or pour affiner les tests. !!!

!!! info Compléments : la fonction input Pour que le programme demande à l'utilisateur de saisir une valeur on peut utiliser la fonction input de la façon suivante :

rep = input("Entrer une valeur : ")

Ceci va ouvrir afficher le message et attendre que l'utilisateur saisisse quelque chose au clavier, puis une fois la saisie validée par la touche enter le programme stockera la saisie dans la variable rep. Il est important de noter que cette variable sera automatiquement de type str (chaîne de caractères). Si l'on veut récupérer des nombres il faudra la convertir avec l'une des commandes :

rep = int(rep)
rep = float(rep)

!!!

Exercice 3

Q6. Compléter le programme ci-dessous qui doit demander un nombre entier à l'utilisateur et afficher s'il est pair ou impair.

In [ ]:
rep = input("Entrer un nombre entier:") 
rep = int(rep)

# à compléter

Exercice 4

Q7. Compléter le programme ci-dessous qui doit demander un nombre entier à l'utilisateur et afficher s'il est divisible par 3 et 7 en même temps. tester et constater que s'il est divisible par 3 et 7 il l'est aussi par 21=3*7. Faire plusiseurs saisie et dire ce que vous remarquez...

In [ ]:
rep = input("Entrer un nombre entier:") 
rep = int(rep)
a = 3
b = 7

# à compléter

Q8. Même question avec la divisibilité par 4 et 6 en même temps, et voir s'il est toujours divisible par 24=4*6

In [ ]:
# réponse à Q8

Exercice 5

Q9. Insérer une celle ci-dessous et y écrire un programme qui demande à l'utilisateur de saisir un caractère, puis qui affiche si ce caractère est une voyelle, une consonne ou autre chose (penser à gérer les minuscules et majuscules...)

Exercice 6

Q10. Insérer une celle ci-dessous et y écrire un programme qui demande à l'utilisateur de saisir un chiffre entre 1 et 7, puis qui affiche jour de la semaine correspondant (Pensez à gérer le cas où la donnée serait invalide !)

Exercice 7

Q11. Insérer une celle ci-dessous et y écrire un programme qui demande à l'utilisateur de saisir une année, puis qui affiche si elle est bissextile ou non. On rappelle qu'une année bissextile est une année spéciale contenant un jour supplémentaire, soit un total de 366 jours dans une année. Une année est considérée comme une année bissextile si l'année est exactement divisible par 4 mais non divisible par 100. L'année est également une année bissextile si elle est exactement divisible par 400.

Exercice 8

Q10. Insérer une celle ci-dessous et y écrire un programme qui demande à l'utilisateur de saisir successivement 3 nombres a, b et c. Ces trois nombres représentent le trinôme $ax^2+bx+c$. Le programme doit ensuite afficher les racines réelles de ce trinôme.


Q11. Si cela n'a pas encore été fait, pour vous entrainer, aller sur la page instructions conditionnelles de coding game et faire les parties 1, 2 et 3 (répondre au QCM)