Python

Partie 1


1. Programmer un ordinateur, c’est quoi ?

Programmer, c’est créer des programmes (suite d’instructions données à l’ordinateur) ! Un ordinateur sans programme ne sait rien faire. Il existe différents langages qui permettent de programmer un ordinateur, mais le seul directement utilisable par le processeur est le langage machine (suite de 1 et de 0). Aujourd’hui (presque) plus personne ne programme en langage machine (trop compliqué).

Les informaticiens utilisent des instructions (mots souvent en anglais) en lieu et place de la suite de 0 et de 1. Ces instructions, une fois écrites par le programmeur, sont « traduites » en langage machine. Un programme spécialisé assure cette traduction. Ce système de traduction s’appellera interpréteur ou bien compilateur, suivant la méthode utilisée pour effectuer la traduction.

Il existe deux grandes familles de langages de programmation :

  • Les langages de bas niveau sont très complexes à utiliser, car très éloignés du langage naturel, on dit que ce sont des langages « proches de la machine », en contrepartie ils permettent de faire des programmes très rapides à l’exécution. L’assembleur est le langage de bas niveau. Certains « morceaux » de programmes sont écrits en assembleur encore aujourd’hui.
  • Les langages de haut niveau sont eux plus « faciles » à utiliser, car plus proches du langage naturel (exemple : si a=3 alors b=c). Exemples de langages de haut niveau : C, C++ , Java, Python, PHP, Javascript… Au lycée, notre langage de prédilection sera Python.

Remarque : HTML n’est pas un langage de programmation.

programeuse

2. Le langage de programmation Python

L’essentiel

Ne soyez pas effrayé par les quelques termes techniques, ce n’est pas essentiel de les comprendre en première lecture.
Python est un langage de programmation interprété , multi-paradigme et multiplateformes. Il favorise la programmation impérative structurée ,
fonctionnelle
et orientée objet. Il est doté d’un typage dynamique fort. Le langage Python est open source. Il est apprécié par certains pédagogues qui y trouvent un langage où la syntaxe, clairement séparée des mécanismes de bas niveau, permet une initiation aisée aux concepts de base de la programmation. Python est le langage de programmation le plus utilisé dans le domaine du Machine Learning, du Big Data et de la Data Science. Python est aussi utilisé dans le Web, les sites suivants utilisent Python et son célèbre framework Django : Pinterest, Instagram, washingtonpost.com, newyorktimes.com, nationalgeographic.com ou encore le site de la NASA.

Un peu d’histoire

Créé en 1991, le langage de programmation Python apparu à l’époque comme une façon d’automatiser les éléments les plus ennuyeux de l’écriture de scripts. Il est crée par Guido van Rossum et tire son nom de l’émission Monty Python’s Flying Circus.
Depuis plusieurs années la popularité du langage Python ne cesse de croitre. Vous pouvez consulter
l’index TIOBE :
pour vous faire une idée.
Il est parmi les plus utilisés dans le domaine du développement de logiciels, de gestion d’infrastructure et d’analyse de données.
Python est un langage de programmation open source créé par le programmeur Guido van Rossum en 1991.

Python en sciences

Le langage est aussi très utilisé dans le domaine de la science des données et du Machine Learning.
La grande majorité des bibliothèques utilisées pour la science des données ou le Machine Learning ont des interfaces Python. Ainsi, ce langage est devenu l’interface de commande de haut niveau la plus populaire pour les bibliothèques de Machine Learning et autres algorithmes numériques. Si le Python s’est érigé comme le meilleur langage de programmation pour le Big Data, c’est grâce à ses différents packages et bibliothèques de science des données.(Pandas, Bokeh, NumPy, Scipy, Scikit-learn, PyBrain, TensorFlow)

Environnement de travail

Il existe de nombreux IDE (environnement de développement intégré) : Pycharm, VS code, Ninja, Spyder, Wing IDE, etc.
À terme, vous pourrez faire votre choix personnel.

Nous utiliserons l’environnement Winpython  qui fournit, entre autre, le notebook Jupyter et l’IDE Spyder.

Des exercices supplémentaires sont à traiter sur le site France IOI : après avoir créé un compte et renseigné votre profil, vous rejoindrez le groupe de votre classe :

SNT :    « SNT 2ndn Sturm « ,  n étant le numéro de votre classe de Seconde.
NSI et ISN : « CodeSturm »

Travail en autonomie :

France IOI Niveau 1
1 – Affichage de texte, suite d’instructions : tout traiter sauf les challenges.
Prenez le temps de lire les cours et explications sur France IOI.

Rentrons à présent dans le vif du sujet.

3. Python comme calculatrice

Dans cette partie nous utiliserons que l’interpréteur Python.

spyder interpreteur

Commencez par y taper quelques opérations à l’aide des opérateurs de base suivants :

SymboleOpération
+Addition
Soustraction
*Multiplication
/Division
//Divion entière : quotient dans la division euclidienne
**Puissance
%Modulo : reste dans la division euclidienne

Vous pouvez tester les lignes suivantes :

>>>54621325 * 4487
>>>24/9
>>>24//9
>>>24%9

On peut être amené à devoir utiliser des fonctions mathématiques, pour cela il faut préalablement importer un module supplémentaire, le module math.

from math import * # Cela signifie : "dans le module math, importer tout"
>>>sqrt(4) # Racine carrée de quatre
>>>pow(2,10) # Autre façon de calculer une puissance

La documentation du module maths : https://docs.python.org/fr/3/library/math.html


4. Notion de variable

Définition du mot ordinateur :

« Machine automatique de traitement de l’information, obéissant à des programmes formés par des suites d’opérations arithmétiques et logiques.. »

—Le Petit Larousse

Qui dit « traitement de l’information », dit donc données à manipuler. Un programme « passe » donc son temps à traiter des données. Pour pouvoir traiter ces données, l’ordinateur doit les ranger dans sa mémoire (RAM – Random Access Memory). La RAM se compose de cases dans lesquelles nous allons ranger ces données (une donnée dans une case). Chaque case a une adresse (ce qui permet au processeur de savoir où sont rangées les données).

Alors, qu’est-ce qu’une variable ?

Eh bien, c’est une petite information (une donnée) temporaire que l’on stocke dans une case de la RAM. On dit qu’elle est « variable », car c’est une valeur qui peut changer pendant le déroulement du programme.

Une variable est constituée de 2 choses :

  • Elle a une valeur : c’est la donnée qu’elle « stocke » (par exemple le nombre entier 5)
  • Elle a un nom : c’est ce qui permet de la reconnaître. Nous n’aurons pas à retenir l’adresse de mémoire, nous allons juste indiquer des noms de variables à la place.
x = 42

Grâce à cette ligne, nous avons défini une variable qui porte le nom x et qui « contient » le nombre entier 42. On dit qu’on affecte à la variable x la valeur 42 (en langage naturel, on notera :  x←42).

En fait, pour être plus précis, on dit que la variable x référence le nombre entier 42.

Et on peut changer la valeur d’une variable :

>>>i = 12
>>>i
12
>>>i = 15
>>>i
15

D’après vous, que fait ce programme ?

a = 11
a = a + 1
a = 11
a = a + 1

Détaillons ce qui se passe dans ce programme :

  • dans la première ligne, nous créons une variable a qui référence l’entier 11
  • dans la deuxième ligne :
      • nous prenons la valeur actuelle de a (c’est-à-dire 11) et nous ajoutons 1 à 11, à droite de l’égalité nous avons donc maintenant la valeur 12
      • nous attribuons la valeur qui vient d’être calculée à la variable a

    Conclusion : a vaut 12 après l’exécution de ces lignes.

Il faut donc lire la ligne « a = a + 1 » de droite à gauche.

Ce raisonnement peut être généralisé pour éviter des erreurs parfois difficiles à corriger : dans une égalité, commencer toujours par évaluer l’expression se trouvant à droite du signe égal.

Pour des incrémentations de type a=a+n, on peut aussi utiliser le code plus efficace suivant :

a += n

Remarque : En python la syntaxe n++ n’existe pas.

En Python il est également possible de réaliser des affectations multiples :

y = x = 5
a, b = 2, 3
print(a,b,x,y)

Prédire le résultat puis vérifier avec l’interpréteur Python :

a, b = 1, 2
a, b = b, a + b
c = a**b
print(a, b, c)
2 3 8

Règles pour les noms de variables :

Les noms de variables autorisés sont des séquences de lettres (majuscules ou minuscules) et de chiffres qui débutent toujours par une lettre. La casse est significative. Il existe quelques mots réservés ne pouvant faire office de nom de variable (def, if, while, True, False…).

Mais, les bonnes pratiques (PEP8) recommandent notamment :

  • Lettres seules, en minuscule : pour les boucles et les indices ;
  • Lettres minuscules + underscores : pour les modules, variables, fonctions et méthodes. ;
  • Lettres majuscules + underscores : pour les (pseudo) constantes.
une_variable = 3  # Autorisé et respecte la PEP8
if = 2 # Interdit
5nombre = 5 #Interdit 
Une_Variable = 8 # Autorisé mais ne respecte pas la PEP8 

5. Les types de base des variables

Pour désigner la nature d’un objet manipuler par Python on parle de type. Les types de base sont :

intNombre entier
floatNombre à virgule flottante
strChaîne de caractères
boolValeur booléenne
x = 2.0
type(x)
x = int(x) # permet de convertir un nombre à virgule flottante en un entier
type(x)
x = float(x) # et réciproquement !
type(x)
x = str(x) # en convertissant x en chaîne de caractères, on ne pourra plus faire de calcul avec lui
type(x)

6. Les structures de contrôle

Les conditions

Les opérateurs de comparaison :

SymboleOpération
<Inférieur
>Supérieur
<=Inférieur ou égal
>=Supérieur ou égal
!=Différent
==Égal

Les opérateurs logiques :

andET
orOU
notNON
inINCLUS

Exemple :

variable = 3
if (variable >= 2) and (variable < 5):
    print("La variable se trouve entre 2 et 5")
else:
    print("La variable ne se trouve pas entre 2 et 5")

Attention à l’indentation ! En effet, les espaces au début de certaines lignes permettent de délimiter des blocs d’instructions. Attention également aux deux points « : » à la fin d’un opérateur nécessitant un bloc d’instruction à sa suite.

Écrire un programme qui demande à l’utilisateur son âge et lui indique en conséquence s’il est majeur ou non. Pour lire une entrée saisir par l’utilisateur, on peut utiliser le code suivant :

La commande : int(input(« Quel est votre âge ? »)) permet de convertir ce que l’utilisateur aura entré au clavier en un entier. En effet, les entrées sont par défaut de type « chaîne de caractère (str).

age = int(input("Quel est votre âge ?"))
# Complètez ici
age = int(input("Quel est votre âge ?"))

if age >= 18:
    print("Vous êtes majeur !")
else:
    print("Vous êtes mineur !")

Bonus : dans certains cas, s’il n’y a que deux résultats simples possibles on peut utiliser un opérateur ternaire.

a, b = 2, 3
minimum = a if (a < b) else b  
print(minimum)

Les boucles

La boucle for

La boucle for correspond à « Pour … allant de … à … faire … »
Quelques exemples :

for i in range(20): # Pour i allant de 0 à 19.
    print(i)

for i in range(1,20,2): # Pour i allant de 1 à 19 avec un pas de 2.
    print(i)

Travail en autonomie

Exercices France IOI : Niveau 1

2 – Répétitions d’instructions : 1, 2, 3, 4, 5, 6, 11, 12 ,13

3 – Calculs et découverte des variables : 1, 2, 5, 7, 8, 12, 15, 16

4 – Lecture de l’entrée : 1, 2, 3, 13

5 – Tests et conditions : 1, 2, 5, 6, 9

6 – Structures avancées : 1, 3, 4

La boucle while

La boucle while correspond à « Tant que … faire … »
Quelques exemples :

# Pouvez vous prévoir le problème avec le code suivant ?
i = 10
while (i < 100):
    print(i)
i = 10
while (i < 100):
    print(i)
    i=i+1 # Dans cette boucle i est bien incrémenté.
print("la boucle est terminée")

La boucle for est privilégiée quand on connait à l’avance le nombre d’itérations.

Travail en autonomie

Exercices France IOI : Niveau 1
8 – Répétitions conditionnées : 1, 2, 3, 4


Exercices d’applications :

Réalisez ce programme à l’aide d’une boucle

for i in range(1,6):
    print(i * "*")

Écrire un programme qui demande à l’utilisateur de deviner un nombre mystère compris entre 0 et
100. A chaque proposition le programme indiquera à l’utilisateur « C’est plus ! » ou « C’est moins ! ».
Pour générer le nombre mystère aléatoire nous utiliserons les code suivant :

from random import *
nombre_mystere = randint(0,100)

La documentation du module random : https://docs.python.org/fr/3/library/random.html

from random import *
nombre_mystere = randint(0,100)
proposition = -1
compteur = 0
while (proposition != nombre_mystere):
    proposition = int(input("Quelle est votre 
    proposition ?\n"))
    compteur += 1
    if (proposition < nombre_mystere):
        print("C'est plus !")
    elif (proposition > nombre_mystere):
        print("C'est moins !")
    else:
        print("Bravo !")
print("Bravo, vous avez trouvé en {} essais !".format(compteur))

 

Implémenter en Python, la suite de Syracuse. Prenez un nombre entier positif, et infligez-lui le traitement
suivant :
• S’il est pair, vous le divisez par 2 ;
• S’il est impair, vous le multipliez par 3 et vous ajoutez 1.
Pour tester si un nombre est pair on utilise le test suivant :

if (nombre%2 == 0):
nombre = int(input("Quel est votre nombre ?\n"))
while (nombre != 1):
    if nombre % 2 == 0:
        nombre //=2
    else:
        nombre = nombre * 3+1
    print(nombre)

Vous voici prêts pour la partie 2 de ce cours.