Instruction conditionnelle

Objectifs :

À la fin de cette séquence vous serez capable de :

  • Générer un nombre aléatoire à l'aide de les fonctions random() et randint()
  • Manipuler les instructions if, elif et else
  • Commenter une programme
  • Écrire un petit algorithme qui répond à un problème donné
  • Écrire un algorithme en pseudo-code
  • Spécifier (décrire) un programme

Un mini-projet

No description has been provided for this image
Dans ce jeu, le programme génère un nombre aléatoire mais ce nombre n'est pas visible par le joueur.
Le joueur doit le deviner en une seule tentative.

  • Si le joueur entre le même nombre que celui généré par le système, le programme affiche le message gagnant et le jeu s'arrête là.
  • Si le joueur entre un mauvais nombre, ce numéro est évalué.
    • Si le nombre est supérieur à la bonne réponse, le système donne un indice indiquant que le nombre saisi est «élevé»,
    • sinon, si le nombre est inférieur à la bonne réponse, il indique « inférieur ».

1. Générér un nombre aléatoire

In [ ]:
import random
In [ ]:
# Générer un nombre réel compris entre 0 et 1 exclu
aleatoire = random.random()
print(aleatoire)
In [ ]:
help(random.random)
In [ ]:
# Générer un nombre réel compris entre 3 et 4 exclu
aleatoire = random.random() + 3
print(aleatoire)
In [ ]:
# Générer un nombre réel compris entre -1 et 0 exclu
aleatoire = random.random() - 1
print(aleatoire)
In [ ]:
# Générer un entier compris entre 0 et 6 compris
de = random.randint(1, 6)
In [ ]:
help(random.randint)
In [ ]:
de
In [ ]:
#somme de deux dés
de1 = random.randint(1, 6)
de2 = random.randint(1, 6)
print(f"Vous avez joué {de1} et {de2} pour un total de {de1 + de2}")
In [ ]:
#somme de deux dés
de1 = random.randrange(1, 7) #la borne supérieure (7) n'est pas considérée
de2 = random.randrange(1, 7)
print(f"Vous avez joué {de1} et {de2} pour un total de {de1 + de2}")

2. Découvrir et manipuler l'instruction if

In [ ]:
print("Bienvenue sur notre site.")
print("\nLa sécurité est notre devise !\n")
mot_pass = intput("Saisir votre mot de passe :")
if mot_pass = 'nsi':
    print("connexion réussie.")

Syntaxe

In [ ]:
if test :
    <expression n°1>
    ...
    <expression n°n>
<instruction après le Si>

#Après les deux points il y a une indentation (décalage)
#expressions n°... constituent un block de code indenté par rapport à la ligne précédente. On l'appelle le corps du if

Organigramme

No description has been provided for this image
In [ ]:
print("Bienvenue sur le site du LDJ.")
print("\nOn gagne à tous les coups !\n")
mot_pass = intput("Saisir votre mot de passe :")
if mot_pass == 'nsi':
    print("connexion réussie.")
    print("Attention, les jeux d'argent sont interdits aux mineurs !")

La clause else

In [ ]:
#Que se passe-t-il si la connexion échoue ? On ne le sait pas.
print("Bienvenue sur le site du LDJ.")
print("\nOn gagne à tous les coups !\n")
mot_pass = intput("Saisir votre mot de passe :")
if mot_pass == 'nsi':
    print("connexion réussie.")
    print("Attention, les jeux d'argent sont interdits aux mineurs !")
else:
    print("mot de passe incorrect !")

La clause elif

In [ ]:
#Afficher votre humeur du jour sur écran d'un ordinateur


print("Je sens votre tempérament. Votre humeur actuel sur mon écran.\n")
print("Choisissez un entier entre 1 et 3 et j'afficherai votre humeur")

'''
'''
choix = int(input("Saisir un entier entre 1 et 3"))
print("\nVous êtes...")
if choix == 1:
    #Vous êtes joyeux
    print("\U0001f600")
elif choix == 2:
    #Vous êtes ni gai ni triste
    print("\U0001F611")
elif choix == 3:
    #Vous êtes triste
    print("\U0001F612")
else:
    print("D'une humeur indescriptible ! (Vous devez rapidement consulter un psy.)")

if imbriqués

Organigramme

No description has been provided for this image

Opérateurs de comparaison

Opérateurs Signification Exemples Valeur de vérité
== égalité 3 == 7 False
!= différent 3 != 7 True
< plus petit que 3 < 7 True
≤ plus petit ou égal à 3 ≤ 7 True
> plus grand que 3 > 7 False
≥ plus grand ou égal à 3 ≥ 7 False

L'algorithme de notre jeu

"""
    Cet algorithme génère un nombre aléatoire compris entre 1 et 10.
    Ce nombre doit être deviné en une seule tentative.
"""
  1. Choisir un nombre à deviner entre 1 et 10.
  2. Demander au joueur de proposer un nombre.
  3. Si la proposition est plus petite que le nombre à deviner, afficher : « Trop petit. »
  4. Si la proposition du joueur est supérieure au nombre à deviner, afficher : « Trop grand. »
  5. Sinon, afficher « Bravo, vous avez deviné le bon nombre. »

Le pseudo-code du jeu

Le pseudo-code est une façon d’écrire un algorithme en langage courant simplifié, mais structuré comme un programme informatique.
Il combine des mots-clés (SI, TANT QUE, POUR…) et des symboles (←, =, +, ≥…) pour décrire les instructions.

nbre_secret ← un entier choisi au hasard entre 1 et 10

essai ← proposition du joueur

SI essai < nbre_secret ALORS

Afficher « Trop petit. »

SINON SI essai > nbre_secret ALORS

Afficher « Trop grand. »

SINON

Afficher « Bravo, vous avez deviné le bon nombre ! »

FINSI

Faites-vous plaisir 1 :

Écrire un programme Python qui demande à l’utilisateur de saisir un nombre et détermine si le nombre est positif, négatif ou nul.

Faites-vous plaisir 2 :

Écrire un programme Python qui demande à l’utilisateur de saisir un nombre et détermine si le nombre est pair ou impair.

Faites-vous plaisir 3 :

Écrire un programme Python qui demande à l’utilisateur de saisir trois nombres et détermine le plus grand des trois.

Faites-vous plaisir 4 :

Écrire un programme Python qui lit trois entiers naturels (longueurs des côtés d'un triangle)

  1. Si les trois longueurs ne vérifient pas l’inégalité triangulaire, afficher « Ce n’est pas un triangle. ».
  2. Sinon, déterminer si le triangle est rectangle (théorème de Pythagore) et afficher :
    • « Triangle rectangle. » ou
    • « Triangle non rectangle. »

Faites-vous plaisir 5 : Vérification d'âge incorrecte (if)

Description : Ce programme demande l'âge d'une personne et doit indiquer si elle est majeure (18 ans ou plus) ou mineure.

In [ ]:
# Problème de Débogage 2
age_str = input("Quel est votre âge ? ")
age = age_str
if age >= 18:
    print("Vous êtes majeur.")
else:
    print("Vous êtes mineur.")

Comportement Attendu (Exemple avec entrée "20") :
Quel est votre âge ? 20
Vous êtes majeur.

Comportement Attendu (Exemple avec entrée "15") :
Quel est votre âge ? 15
Vous êtes mineur.

(Note : Le code peut lever une erreur de type TypeError ou donner un résultat inattendu.)

Identifier l'erreur de type et corriger le code.

Faites-vous plaisir 5 : Condition if

Description : Ce code vérifie si un nombre est divisible par 3 ou par 5, mais contient une erreur.

In [ ]:
nombre = int(input("Entrez un nombre : "))

if nombre % 3 == 0:
    print("Divisible par 3")
elif nombre % 5 == 0:
    print("Divisible par 5")
elif nombre % 3 == 0 and nombre % 5 == 0:
    print("Divisible par 3 et 5")
else:
    print("Non divisible")

Le saviez-vous ?
Depuis Python 3.10, match ... case peut remplacer une suite de if/elif, ce qui rend le code plus lisible pour des choix multiples.

print("Je sens votre tempérament. Votre humeur actuelle s'affiche sur mon écran.\n")
print("Choisissez un entier entre 1 et 3 et j'afficherai votre humeur")

choix = int(input("Saisir un entier entre 1 et 3 : "))

print("\nVous êtes...")
match choix:
    case 1:  # joyeux
        print("\U0001F600") 
    case 2:  # neutre
        print("\U0001F611") 
    case 3:  # triste
        print("\U0001F641") 
    case _:  # valeur en dehors de 1..3
        print("D'une humeur indescriptible !")

Ici on suppose que l’utilisateur entre bien un entier.

In [ ]: