Afin de pouvoir personnaliser votre classeur sans détruire le classeur sur lequel travaille votre voisin, vous allez tout d'abord aller dans le menu File puis Make a copy.... Renommez le classeur en ajoutant votre nom à la fin du nom de fichier par exemple.

Algorithmique et Programmation : premiers pas en Python

Premiers scripts

Nous allons commencer à rédiger des petits programmes Python. Bien entendu, ceux-ci seront au début complètement dépourvus d'intérêt. Au fur et à mesure, les choses gagneront en consistance et en efficacité pour atteindre des problèmes plus complexes.

Première ligne de Python

Quand vous exécutez un programme, vous verrez aussi une sortie. L'exemple de code ci-dessus contient une seule commande print("Bonjour, Python !") qui produit une seule ligne de sortie. Appuyez sur Shift Entrée dans la ligne In [x] pour valider le contenu du champ de saisie.

In [ ]:
print("Bonjour, Python !")

Voici l'analyse de notre premier programme :

  • print est le nom de la commande Python qui envoie des messages vers la sortie.

  • Les parenthèses () après la commande print sont utilisées pour contenir ce que vous voulez afficher.

  • Les guillemets " " sont utilisés pour contenir le texte Bonjour, Python ! à l'intérieur. Sans les guillemets, Python penserait que Bonjour est censé être une commande. Cela entraînerait une erreur puisque cette commande n'existe pas. </UL> Au fur et à mesure que vous progresserez au travers des leçons, vous trouverez d'autres parties d'un programme Python. Voyons exactement ce qui se passe si on laisse les guillemets de côté.

In [ ]:
print(Bonjour, Python)

Là, le programme plante : cela veut dire que nous avons donné une mauvaise commande à l'ordinateur, ce qui génère une erreur et le force à s'arrêter.

Exercice

Vous trouverez notre premier exercice ci-dessous. Il demande d'écrire un programme similaire au premier programme que nous avons vu ci-dessus.
Ecrivez un programme qui affiche

Hello world!
In [ ]:
 

Les variables

Les variables permettent de stocker des valeurs. Elles sont un moyen de nommer les informations pour une utilisation dans un programme. Chaque variable a un nom ; un exemple de nom de variable que nous utiliserons est monNombre. Pour stocker de l'information dans une variable, nous écrivons une commande en utilisant le signe égal (=) dans la manière suivante :

In [ ]:
monNombre = 13
print(monNombre+1)

L'instruction très utile "a=a+1" qui n'a aucun sens mathématique est très utile en informatique :

In [ ]:
a=3
a=a+1
print(a)
print(A) # la casse (distinction entre majuscules et minuscules) est prise en compte

En première ligne, la valeur 3 est affectée dans la place mémoire "a". En deuxième ligne, l'ordinateut calcule "a+1" puis l'affecte dans la place mémoire "a" : la variable "a" devient donc égale à 4. On vient d'augmenter (on dit aussi incrémenter) la variable "a" d'une unité. La dernière ligne confirme le fait que le langage machine différencie les lettres minuscules et majuscules, d'où le message d'erreur.

In [ ]:
a=5
b=3
b=2*b-a
interro("Quelle est la valeur de b ?",b)

Les différents types de variable

Les variables peuvent contenir différents types d'informations. On dit qu'elles sont de type :

  • int : entiers (ex : -2 ; 5)
  • float : décimal (ex -2.0 ; 2e6=2000000.0)
  • str : chaîne de caractère (ex 'Bonjour' ; "Autre exemple" ; "2+3" ; "5")
  • bool : Booléen : Vrai ou Faux. (ex : 2==3, False, 3<4)
  • list : Tableau ou liste (ex : [1,'toto', 2.0] ; [[1,2],[3,4]])
In [3]:
chaine="Je suis une chaîne de caractère"
type(chaine)
Out[3]:
str

Comme vous pouvez le voir, contrairement à d'autres langages comme Algobox, Python devine tout seul le type des variables. Il est inutile de lui préciser par avance. Cela est extrèmement pratique !

Même si ce n'est pas conseillé, on peut aussi changer de type en cours de route :

In [5]:
a="Je suis une chaîne"
print(a)
a=12 # et maintenenant je suis un nombre !!!
print(a)
Je suis une chaîne
12

Affectations simultanées

In [ ]:
x,y=1,2
print(x,y)

Une application très classique de l'affectation simultanée est l'échange du contenu de deux variables

In [ ]:
A,B=32,10
print(A,B)
A,B=B,A

interro("Quelle est la valeur de A ?",A)
interro("Quelle est la valeur de B ?",B)

L'affectation croisée "A,B=B,A" permet en une seule ligne d'échanger les contenus des variables A et B. Tentons maintenant d'échanger deux variables A et B sans affectation multiple :

In [ ]:
A=12
B=30
print(A,B)
A=B
B=A
interro("Quelle est la valeur de B ?",B)
print(A,B)

On a affecté à la variable B une valeur non numérique, mais une chaîne de caractère (entre guillemets). La troisième ligne confirme l'affectation pour "A" et "B". Cependant, la quatrième ligne efface de la mémoire la valeur de "A", de sorte que "A" devient égal à "B". L'instruction "B=A" est alors inutile.

Pour contourner ce problème, il faut avoir recours à une mémoire temporaire :

In [ ]:
A=12
B=30
print(A,B)
memoire_Temp=A
A=B
B=memoire_Temp
print(A,B)

Instruction Saisir

Avant d'entammer les boucles et les différents algorithmes, nous allons découvrir comment sous Python on réalise la saisie interactive d'une valeur dans une variable.

In [ ]:
x=eval(input("Saisir la valeur de x : "))

print("vous avez saisi la valeur",x)

On utilise donc la fonction

eval(input("Texte affiché à l'utilisateur"))

L'avantage de cette fonction est que le contenu de la ligne est évalué. Vous pouvez vous amuser à saisir sqrt(2)/2 !

Boucle pour

La syntaxe de la boucle pour est un peu particulière : On dit à une variable de parcourir un certain intervalle.

L'intervalle en question est décrit par l'instruction range(n). Les quelques exemples ci-dessous vous illustrent le fonctionnement de cette instruction.

In [ ]:
for i in range(5):
    print("je répète 5 fois la même chose. Ici, i=",i)

Ce qu'il faut retenir c'est :

  • que la boucle for i in range(n) tournera n fois
  • que la variable i prendra les valeurs entières entre 0 et n-1

Importance du symbole : Remarquez bien le : après le range. Cela marque le début d'un bloc.

Un bloc en python se distingue par le décalage par rapport à la marge. Il permet de délimiter le début etr la fin du contenu de la boucle pour. En effet, contrairement à la calculatrice, il n'y a par de mot clé end(TI) ou next (casio) pour signifier la fin de la boucle pour.

On retrouvera cette notion de bloc également pour les boucles tant que, les tests si... alors... sinon..., les définitions de fonction etc...

Soyez donc très attentif à la présence de ces : et au décalage de marge qui s'en suit.

On peut paramétrer un peu l'instruction range :

range(1,10)

Le compteur commencera à 1 et s'arrêtera à 9

Exemple : Expérimenter et expliquer les valeurs prises par la variable i dans la boucle

for i in range( 3,15,2) :

In [ ]:
# expérimenter votre code ici

Votre réponse ...

Exercices

Ecrire un programme qui demande un nombre à l'utilisateur et qui affiche la table de multiplication de ce nombre. L'affichage de sortie ressemblera à ceci :

table de 7 : 
1 x 7= 7
2 x 7= 14
3 x 7= 21
4 x 7= 28
5 x 7= 35
6 x 7= 42
7 x 7= 49
8 x 7= 56
9 x 7= 63
In [ ]:
# Ecrire votre code ici

Ecrire un programme qui calcule la somme des entiers de 5 à 112

In [ ]:
# Ecrire votre code ici

Boucle Tant que

Exécuter le programme ci-dessous. Quel est son rôle ? Remarquez la présence des : et le décalage de marge.

In [ ]:
x=0
while (x==0):
       x=eval(input("saisissez un nombre non nul : "))
print("l'inverse de",x,"est",1/x)

Le programme ...

A vous de jouer ...

Soit $(u_n)_{n\in\mathbb N}$ la suite définie par

  • $u_0=2$
  • $u_{n+1}=0,2\times u_n+10$

Afficher les 10 premiers termes de la suite $(u_n)$

In [ ]:
# Ecrire votre code ici

Déterminer le plus petit rang $n$ pour lequel $u_n\geqslant 6.24995$

In [ ]:
# Ecrire votre code ici
In [ ]:
 

Instruction Si...Alors...Sinon

Observez le fonctionnement du programme ci-dessous :

In [ ]:
n=eval(input("Saisissez la valeur de n"))
if n%2==0 :
    print(n, " est un nombre pair")
else : 
    print(n, " est un nombre impair")

Remarquez que pour tester l'égalité, on utilise l'opérateur ==

En effet le signe = est déjà utilisé pour l'affectation d'une valeur à une variable.

Exercice : Le programme du juste prix !

Pour conclure ce classeur d'activité, vous devrez écrire un programme de juste prix. Voici les règles du jeux :

  • L'ordinateur pense à un nombre entre 1 et 100
  • Vous devez essayer de le deviner en 10 coups maximum
  • L'ordinateur affiche gagné si vous trouvez en moins de 10 coup, ou perdu sinon

Quelques indices :

Pour choisir un nombre aléatoire entre 1 et 100, on peut utiliser l'instruction randint :

In [22]:
print(randint(1,10))
3

Dans l'exemple ci-dessus, la borne 1 est incluse et la borne 10 est exclue

On pourra utiliser une boucle tant que, une variable pour comptabiliser le nombre de coups et des tests si... alors... sinon. Il est fortement conseillé d'écrire un algorithme en langage naturel avant de se lancer dans le programme. A vous de jouer !

In [ ]:
# Ecrire votre programme ici....