Python débutant

Bases de Python

Si les programmes ne s’exécutent pas en cliquant sur Run, c’est que le serveur de GDB est saturé temporairement. Cliquez alors sur le bouton fork me pour ouvrir le code dans une nouvelle fenêtre (et pouvoir le modifier également)

Calculer en python

Voici un exemple de syntaxe pour du code en python :

On commence par définir une valeur pour a et b, puis on additionne les deux pour donner c et enfin on affiche le résultat avec la fonction print()

Exercice
En affectant chaque nombre à une variable de votre choix, faire calculer :

52+12
36 × 54
12,5 + 5,5
12.5 + 5.5
12.35 × 36.12

Exemple :

Que s’est-il passé ?

Python est un langage qui ne “type” pas ses variables. C’est à dire qu’on peut créer une variable (sous la forme : nom = contenu) et python va deviner de quel type de variable il s’agit en fonction de son contenu. C’est à la fois très puissant et ‘dangereux’, car python va ‘bêtement’ effectuer les calculs demandés sur les variables sans se poser de questions, mais le résultat ne correspondra pas forcément à ce qu’attendait le programmeur !

Dans le cas de cet exemple, la virgule n’indique pas le séparateur décimal en python, mais indique un séparateur de liste. on a donc pas saisi 12.5 (douze virgule cinq) mais la liste 12 et 5 ! Du coup, comme c’est une concaténation (assemblage) de deux listes, il contient tous les éléments de ces listes.

Entrée utilisateur

L’intérêt d’un programme est de permettre une certaine interactivité avec les utilisateurs. Dans notre programme précédent les valeurs étaient ‘codées en dur’ et l’utilisateur ne pouvait les changer. Ce n’est pas très intéressant pour un programme.

la commande input(“texte que voit l’utilisateur”) permet de demander des valeurs à votre utilisateur :

Que se passe-t-il ? Pourquoi ?

Une fois de plus, python a pris en compte la saisie de l’utilisateur comme il le voulait, et pas comme le programmeur le souhaitait. En l’occurrence, la saisie de l’utilisateur est prise comme un texte et python n’arrive ensuite plus à additionner ce texte (string : str) avec la valeur entière (integer : int) de c.

Il faut donc dire explicitement à python que la valeur entrée est de type entière (si on veut garder des entiers dans le calcul).

Types de données

Comme tous les langages de programmation, Python accepte plusieur type de données. Afin d’éviter une mauvaise interprétation il est possible de préciser le type d’une variable, comme nous l’avons vu dans l’exemple plus haut.

Voici quelques types courants :

int : nombre entier. Par exemple : a = 3
float : nombre décimal; Par exemple :  b = 2.25 (notez le point comme séparateur décimal)
str : suite de caractères. Par exemple : c = “mon texte” (les doubles guillemets au début et à la fin)
list : liste de variables (de n’importe quel type). Par exemple : d = [1,2,3] (crochets au début et à la fin et virgule entre les valeurs)

On peut affecter un type avec la syntaxe vu dans un exemple précédent : a=int(input( ” entrez un nombre “))

Exercices
  1. Écrivez un programme qui demande à l’utilisateur deux nombres entiers, puis multipliez ces nombres et affichez le résultat.
  2. Écrivez un programme qui affiche la table de multiplication (jusqu’à 10) d’un nombre demandé

Structures de test

Dans un programme il faut souvent tester si une condition est remplie avant d’exécuter d’autres parties du programme en fonction du résultat de ce test. Un test consiste à comparer la valeur de deux variables (ou une variable avec une valeur prédéfinie).

Cela se traduit par : Si (quelque chose) Alors (faire 1) Sinon (faire 2)

En python :

Notez le if (si) pour commencer, suivi des conditions et suivi du double point. A ce niveau là, les éditeurs vont généralement insérer une tabulation (espace en début de ligne) et il faudra rester sur ce retrait durant toute la suite d’instruction.

L’ajout d’un else: n’est pas obligatoire et correspond à “sinon”.

Dans l’exemple ci-dessus nous avons créé deux fonctions (faire_1 et faire_2) mais il est possible de mettre directement des instructions dans le corps du test :

Les conditions à utiliser sont les suivantes :

== est égal à
!= n’est pas égal à
< ou > inférieur ou supérieur,
>= ou <= supérieur ou égal ou inférieur ou égal

Exercices
  1. Écrivez un programme qui demande un code de déverrouillage de téléphone et le compare à une valeur stockée dans une variable « password » et répond en conséquence.
  2. Écrivez un programme qui demande l’âge de l’utilisateur et vérifie s’il est majeur ou pas.

Conditions multiples : On peut rajouter des conditions dans un test de comparaison avec la commande « elif »

Cela permet de tester plusieurs possibilités. Attention toutefois à ne pas trop compliquer votre code et à bien réfléchir pour toujours trouver la version la plus efficace pour réaliser ce que vous souhaitez programmer.

Exercice
Écrivez un programme qui demande l’âge de l’utilisateur et lui propose plusieurs réponses en fonction de différentes tranches d’âge.
Soyez créatif et ayez de l’humour !

Boucles

Les boucles permettent de répéter une ou plusieurs commandes plusieurs fois. Il y en a deux sortes :

  • Boucle bornée : on sait combien de fois la boucle doit s’exécuter.
  • Boucle non bornée : la fin de la boucle est déterminée par une condition.

Boucles bornées

Dans ce type de boucles on sait à l’avance le nombre de fois où une boucle doit s’exécuter. Il va de soi que ce nombre de fois peut aussi dépendre d’une variable et donc changer en fonction des actions de l’utilisateur. La syntaxe en python est alors la suivante :

Exécutez le programme ci-dessus et remarquez :

  • Il n’est pas nécessaire de déclarer la variable i avant de créer la boucle (vous pouvez utiliser n’importe quel nom de variable – toujours sans espace dans le nom)
  • le décompte va de 0 à 3, ce qui fait bien 4 passages de boucles : on commence toujours ces boucles avec la valeur 0 !!
  • Notez les doubles points après la définition des règles de la boucle et la tabulation pour les instructions suivantes.

Options de range() :

  • Compter de 0 à 3 : for i in range(4):
 Attention au zéro !! i=0, puis 1,2 et 3
  • Compter entre deux nombres : for i in range(3,5):
 Compte 3,4 on s’arrête toujours un chiffre avant la fin !!
  • Compter avec un pas : for i in range(1,11,2):
 Compte de deux en deux : 1,3,5,7,9
Exercice
Écrivez un programme qui demande un nombre à l’utilisateur et dessine ensuite un sapin de noël (avec des *) comportant autant de lignes que demandé, de taille croissante jusqu’au nombre :
*
**
***

Essayez de trouver une solution par vous-même, ce n’est pas forcément la mienne, mais voici une solution possible :

Boucles non bornées

On ne sait pas toujours à l’avance le nombre de fois où une boucle devra s’exécuter. On peut pour cela utiliser une condition qui sera testée à chaque départ de boucle. Tant que cette condition est vraie, la boucle va ‘tourner’. On utilise cette fois la commande while. Voici un exemple :

Contrairement à la boucle bornée, une boucle non bornée peut ne pas s’exécuter (si la condition n’est pas remplie). 
On exécute la boucle tant que la condition est remplie (attention aux boucles sans fin !!).

Notez également qu’il faut définir la valeur de a au départ, et que si cette valeur ne change pas la boucle sera infinie !

Exercices
  1. Écrivez un petit jeu où un utilisateur donne un nombre et un autre doit le deviner. Pour cela le logiciel lui donne des indications (plus petit, plus grand) et donne le nombre de coups nécessaires à la fin.
  2. Ajoutez la commande suivante au début du programme : 
from random import randint
    Puis générez un nombre aléatoire :
 x=randint(0,1000) et jouez !

Fonctions

Dans un programme on utilise souvent des morceaux de codes identiques à plusieurs endroits du programme. On pourrait utiliser le traditionnel copier/coller pour cela, mais en cas de modification d’un bloc que l’on utilise souvent, cela oblige à changer tous les blocs et multiplie donc les risques d’erreurs dans le programme.

Une manière plus efficace et élégante de faire est d’utiliser des fonctions que l’on pourra réutiliser autant qu’on le souhaite.

Ces fonctions doivent porter un nom explicite et on peut leur envoyer des valeurs de variables (pour faire un calcul par exemple). On utilise la commande def pour définir une fonction et il faut toujours définir cette fonction avant de l’utiliser !

On peut mettre autant de paramètres qu’on le souhaite, ou aucun.

Vous verrez dans les cours de NSI qu’il est possible (voir souhaitable) de placer les fonctions dans un fichier annexe qui sera appelé en début de programme. Il est ainsi possible de créer des listes de fonctions (que l’on nomme bibliothèques) qui seront utilisables par plusieurs programmes.

Exercices
  • Écrire une fonction cube (x3) qui retourne le cube du nombre passé en argument
  • Écrire une fonction volumesphere qui calcule le volume d’une sphère de rayon r fourni en argument et qui utilise la fonction cube
  • Tester la fonction volumesphere par un appel dans le programme principal.

N’hésitez pas à consulter la référence du langage python (anglais) chez w3 : https://www.w3schools.com/python/python_reference.asp

 

Retour aux chapitres

Chapitre suivant