0. Pourquoi Python ?

Le langage de programmation Python est une très bonne option tant pour ceux qui débutent en programmation que pour ceux qui s’y connaissent déjà beaucoup plus. C’est un langage de très haut niveau dont la syntaxe encourage à écrire du code clair et de qualité. De plus l’apprentissage de Python est facilité par l’existence d’une interface interactive et en particlier par l’utilisation des calepin Jupyter. Cela dit, son intérêt ne se limite pas à l’apprentissage de la programmation ou de l’algorithmique; sa popularité et son utilisation vont bien au-delà du cadre académique, en témoigne sa popularité croissante. Il a été choisi par des acteurs majeurs comme Google, YouTube, la NASA.

  1. C’est un langage interprété: lorsqu’on écrit une instruction, on peut directement l’exécuter. A l’opposé, un langage compilé nécessite l’écriture (et la compilation) d’un programme entier avant de pouvoir le tester. Un langage interprété permet de programmer plus facilement, de manière interactive, de tester facilement un morceau de code. C’est donc un langage idéal pour rapidement développer et tester des prototypes, ou plus particulièrement, des algorithmes d’analyse de données.

  2. C’est un langage haut-niveau: une seule ligne de code permet dans certains cas de réaliser des processus complexe, en cachant les détails liés notamment à la gestion ou la représentation des données dans la mémoire de l’ordinateur, ou les opérations arithmétiques ou binaires de bas-niveau. Un langage de haut-niveau rend plus facile le développement d’un programme, et augmente donc la productivité (généralement au détriment de la vitesse d’exécution).

  3. Python est open source: et donc gratuit pour tout le monde, y compris les entreprises.

  4. C’est un langage populaire: la communauté de développeurs est très active, et on trouve facilement sur internet de la documentation et de très nombreux exemples d’utilisation dans tout type d’application. De plus, la communauté développe et maintient de très nombreuses librairies développées et/ou compatibles avec Python, permettant d’augmenter la productivité lors de l’écriture d’un programme, particulièrement dans les domaines des mathématiques et des sciences des données.

Texte alternatif…

(source: https://stackoverflow.blog/2017/09/06/incredible-growth-python/)

Python est donc le langage idéal pour développer et tester facilement et rapidement un algorithme. Le désavantage principal est sa lenteur: l’exécution d’un langage haut-niveau et interprété est généralement plus lente que celle d’un langage compilé.

Dans un contexte où la vitesse d’exécution est cruciale (e.g. pour des systèmes embarqués, ou traitement de données en temps réel, des programmes réactifs), Python n’est pas le langage idéal. A l’inverse, dans un contexte où la vitesse de développement est cruciale (développement de prototypes, d’applications business concurrentes), la productivité offerte par le langage Python en fait un bon choix.

Les principales caractéristiques du langage Python:

Les différentes versions de Python (pour Windows, Unix, etc.), son tutoriel original, son manuel de référence , la documentation des bibliothèques de fonctions, etc. sont disponibles en téléchargement gratuit depuis Internet, à partir du site web officiel.

L’objectif de cette formation est bien d’apprendre un seul langage de haut niveau, permettant tout aussi bien des analyses rapides dans la vie de tous les jours – quelques lignes de code en intéractif – que des programes plus complexes (projets plus volumineux, p.ex. de plus de 100000 lignes).

1. Types de données de base

1.0 Scalaires et chaînes de caractères (ou strings)

On identifie généralement quatre types de données de base en Python.

Trois sont des données numériques:

La dernière permet de représenter du texte:

On définit un string en entourant le texte des symboles “double quote” ou ‘simple quote’. Ainsi, 4 représente un int, mais “4” représente un string.

mon_entier1 = 2
mon_entier2 = -4
mon_flottant = 4.2
mon_booleen = True
ma_chaine_de_caractere1 = "Rue de Cotonou"
ma_chaine_de_caracter2 = ' 64'
ma_chaine_de_caractere3  = " Akpakpa "

1.0.0 Opérations sur les scalaires

Les opérations de base peuvent se faire entre différents types de données numériques, en réalisant des conversions implicites de types si nécessaire:

#Operations sur un seul type de donnée
print(  mon_entier1+mon_entier2,   111-69,   6*7,   (mon_entier1 + mon_entier12) * 10 + 2)
#Opération compatibles entre types différents (entier, float, booléen)
print(mon_entier1 + mon_flottant,\
      mon_flottant + mon_booleen,\
      (mon_entier1 + mon_entier2 - 3.5) * 5 / 2)
#Exposant
print(2 ** 42)

#Modulo
print(11%3)
#La division entière renvoie un float (contrairement au langage C)
8/3
# Attention:
a/2  # le résultat 1.5 en Python 3.4 
     # mais 1 en 2.7

1.0.1 Opérations sur des chaînes de caractères

Les strings peuvent être additionnés entre eux (+), ou multiplés par un entier (*):

#Les opérations sur les strings sont des concaténation
address = ma_chaine_de_caractere1 + ma_chaine_de_caractere2 + ma_chaine_de_caractere3
print(address)
print("Bonjour" * 3)
mon_entier1 + ma_chaine_de_caractere1
string = '4'
string + str(mon_entier1)
mon_entier1 + int(string)

1.1 Structures de base

1.1.0 Listes

Les listes permettent des combinaisons de types.

ma_liste1= [0,53,562,'rdv',[17,"l",298,43]] 

1.1.1 Tuple

Un tuple est similaire à une liste mais ne peut être modifié, il est défini par des parenthèses.

mon_tuple_1= (2020,34,42,'h')

1.1.2 Dictionnaire

Un dictionnaire est similaire à une liste mais chaque entrée est assignée par une clé / un nom, il est défini avec des accolades.

mois = {'Jan':31 , 'Fev': 29, 'Mar':31, 'Avr':30}

2. Syntaxe de Python

2.0 Structures de contrôle

Certaines instructions permettent de contrôler le flux du code:

En Python, l’indentation de chaque ligne de commande est donc très importante, puisque c’est elle qui définit le flux des instructions.

2.0.0 Structure conditionnelle

Les mot-clés if, elif, et else permettent de définir un flux conditionnel d’instructions:

# si alors sinon
a = -23
if a > 0:
    b = 0
    print(b)
else:
    b = -1
print(b)

2.0.1 Structure itérative

Les boucles permettent de définir un flux itératif d’instructions:

for i in range(1,8,2):
    print(i)

2.1 Fonctions

Une fonction est un regroupement d’instructions impératives – assignations, branchements, boucles – s’appliquant sur des arguments d’entrée. C’est le concept central de la programmation impérative.

# Définition d'une fonction
def pythagorus(x,y):
    """ Calcule l'hypotenuse d'un triangle """
    r = pow(x**2+y**2,0.5)
    return x,y,r
pythagorus(5,6)
# exemple d'appel
pythagorus(x=5,y=7)
# aide intégrée
help(pythagorus)
pythagorus.__doc__

Un résumé élargi

Ces structures seront discutées en details dans les calepins à venir.

Références principales

  1. Yaé U. Gaba, J. Sanders; J. Masakuna (2016); Introduction to Programming using Python (IPuP).

  2. Mac Kinney W. (2013); Python for Data Analysis, O’Reilly; pdf.

  3. Sheppard K. (2014); Introduction to Python for Econometrics, Statistics and Data Analysis,pdf.

  4. Moussa Keita (2017); Data Science with Python: Algorithm, Statistics, DataViz, DataMining and Machine-Learning. pdf.

Plus de littérature (Références secondaires)

Il existe également de très bons ouvrages imprimés concernant Python. La plupart concernent encore Python 2.x, mais vous ne devrez guère éprouver de difficultés à adapter leurs exemples à Python 3. En langue française, vous pourrez très profitablement consulter les manuels ci-après:

Maintenant que vous connaissez les bases du Python, vous pouvez passer aux 2. Variables, Types et Opérations.ipynb

Contenu | Précédent (1.0. Sur Colab) | Suivant (1.2. Variables, Types et Opérations)