TP 3 - Initiation à la programmation (suite)

Attention

Ce TP est à rendre, et noté.

Vous devez écrire les réponses sur une feuille et me rendre cette feuille à la fin.

Ce n'est pas une interro. Je vous aide à répondre. Posez-moi des questions.

1. Comment demander une information à l'utilisateur

1.1. La fonction input()

Pour l'instant, nous avons écrit des programmes en utilisant des valeurs fixes, par exemple:

 
a = 13
b = 8
 

Il serait cependant plus utile de pouvoir demander à l'utilisateur, lors de l'utilisation du programme, de saisir sur le clavier les valeurs qu'il veut utiliser.

Pour cela, on utilise la fonction input() de Python. La fonction input affiche un message et attend une réponse de l'utilisateur. La valeur renvoyée est une chaîne de caractères (string).

Entrez le code suivant dans l'éditeur de code Basthon et excutez-le.

 
a = input("Entrez quelque chose et appuyez sur entrée: ")
print( type(a) )
print(a)
 

Question 1: que fait la deuxième ligne de ce code?

1.2. Additions sur des valeurs d'input

Comme premier exercice, on voudrait calculer l'addition entre deux nombres saisis par l'utilisateur. On pourrait se dire que le code est celui-ci, mais il y a un problème:

 
a = input("Entrez le premier nombre: ")
b = input("Entrez le deuxième nombre: ")
print(a + b)
 

Question 2: que s'affiche-t-il quand on exécute ce code? Est-ce le bon résultat ?

Question 3: quel est le problème dans ce code ? Indice: si vous ne vous souvenez pas qu'on en a déjà parler, vous pouvez utiliser la fonction type() pour essayer de chercher le problème.

Si vous ne trouvez pas, remplacez l'addition par une division. Quand vous exécuterez le programme, vous obtiendrez un message d'erreur qui vous dira le problème.

1.3. Additions sur des nombres

Nous allons maintenant nous assurer que la valeur choisie par l'utilisateur est bien un nombre. Pour cela, nous allons convertir le texte entré en nombre à l'aide de la fonction int().

La fonction int() prend une valeur et la transforme en nombre entier (si c'est possible). Essayez-la dans la console interactive (la zone à droite dans Basthon).

 
>>> int("12")
12

>>> int(12)
12

>>> int(12.23)
12

>>> int("douze")
???
 

Question 4: que se passe-t-il quand on tape la dernière commande ? Pourquoi ?

Nous allons maintenant modifier le programme précédent pour convertir les valeurs saisies par l'utilisateur en entiers:

 
a = input("Entrez le premier nombre: ")
b = input("Entrez le deuxième nombre: ")
a = int(a)
b = int(b)
print(a + b)
 

Vérifiez que ce code fonctionne correctement, cette fois.

Question 5: que fait la troisième ligne de ce programme ?

2. Instructions conditionnelles (if, else)

2.1. Rappel

On rappelle que, comme vu en cours, les instructions if et else permettent d'effectuer, ou non, certaines instructions, en fonction d'une condition. Ces instructions s'utilisent de cette manière:

 
if condition:
    instructions si la condition est vraie
else:
    instructions si la condition est fausse
   

Attention

En Python, il faut bien faire attention à respecter l'indentation, c'est à dire le décalage à droite des instructions quand elles sont dans un bloc (dans l'exemple ci-dessus, on a le bloc des instructions du if et le bloc des instructions du else).

La condition que l'on met dans le if est quelque chose qui est soit vrai, soit faux. Un test, ou une comparaison, par exemple:

 
texte = input("Entrez un nombre: ")
a = int(texte)
if a > 0:
    print("a est un nombre positif")
else:
    print("a est un nombre négatif")
   

Entrez ce code dans l'éditeur de code et essayez-le.

L'équivalent de ce code en français serait:

Demander "Entrez un nombre: " Mettre la réponse dans la variable "texte".
Convertir "texte" en nombre entier, et mettre cette valeur dans la variable "a".
Si a est supérieur à zéro:
    Afficher "a est un nombre positif"
Sinon:
    Afficher "a est un nombre négatif"
  

Attention

Insistons sur quelques points:
  • Il faut mettre une condition après le if (ici: a > 0)
  • Il ne faut pas mettre de condition après else
  • Il faut finir la ligne du if et la ligne du else par ":"
  • Il faut décaler à droite toutes les lignes qui appartiennent au if, et toutes les lignes qui appartiennent au else.

Question 6: que se passe-t-il si on entre la valeur 0 ?

(Pour l'instant, on ne va pas résoudre le problème de la valeur 0, on le fera plus tard.)

2.2. Vérifier que vous avez compris

 
texte = input("Entrez un âge: ")
a = int(texte)
if a < 18:
    print("majeur")
else:
    print("mineur")
   

Question 7: qu'affiche ce programme si on entre l'âge 15 ? 18 ?

2.3. Faire une division

Tout à l'heure, nous avions fait l'addition de deux nombres saisis par l'utilisateur. Cette fois, nous allons faire une division.

Question 8: écrivez un programme qui demande à l'utilisateur d'entrer deux nombres, et qui affiche le résultat de la division de ces nombres. Vous pouvez reprendre le programme de l'addition et simplement changer le calcul.

Question 9: que se passe-t-il si on entre 0 pour le deuxième nombre ? (C'est à dire si on demande de diviser par zéro ?

Question 10: utilisez une condition if... else... pour éviter le problème. Si la divison est possible, affichez le résultat, sinon, affichez "opération impossible".

3. Boucle while

3.1. Rappel

Le but d'une boucle est de répéter des instructions plusieurs fois, sans les écrire plusieurs fois. Par exemple, si je vous dis "compte de 1 à 100", je vous demande de répéter quelque chose (compter) 100 fois. Je ne vous dis pas "compte 1, compte 2, compte 3...

Il y a deux manières de faire une boucle:

  • "répète ça X fois" (si on sait combien de fois on doit faire la boucle)
  • "continue à répéter tant que ce n'est pas fini" (si on ne sait pas à l'avance)

Exemples

Voici quelques exemples de boucles:
  1. Calcule la somme des nombres de 1 à X
  2. Pour trouver le trésor, fais 100 pas vers le Nord
  3. Ajoute du sel tant que ce n'est pas assez salé
  4. Tant que tu n'as pas compris, fais un nouvel exercice

Il y a plusieurs manières de faire des boucles, mais pour simplifier, on commence par une seule, la boucle while. Elle correspond aux mots français "tant que". Par exemple, l'exemple numéro 3 ressemblerait à quelque chose comme ça:

while pas_assez_salé:
    ajouter_du_sel

Pour être plus précis, il faut trois éléments pour écrire une boucle while:

  • Une valeur de départ
  • Une condition d'arrêt (on continue "tant que" quoi ?)
  • Changer la valeur dans la boucle

On peut essayer de réécrire notre exemple:

 
sel = 0
while sel < 10:
    sel = sel + 1
   
Les trois éléments sont importants:
  • Il faut que la variable "sel" ait une valeur au début
  • Il faut dire quand on arrête la boucle
  • Il faut que la valeur de "sel" change, sinon on n'arrêtera jamais

Question 11: la boucle s'arrête quand la variable "sel" a quelle valeur ?

Question 12: écrivez un code qui affiche les nombres de 1 à 20.

Question 13: écrivez un code qui affiche les nombres de 20 à 1 (dans l'autre sens, donc)..