Bases de programmation en Python
Variables : notion Une variable permet de stocker/manipuler une donnée dans un programme avec un nom explicite Caractériser par son type (entier, flottant, ...) Python utilise des espaces de noms / namespace pour stocker les données. Schématiquement : nom explicite stocké dans une table de symbole associé à un identifiant la valeur est stockée dans la table de valeurs dans un bloc de mémoire de n bits
Variables : mémoire La table des noms est composée de deux parties : Nom, Type, Adresse. Donnée numérique La table des noms est composée de deux parties : La table des symboles. La table des valeurs.
Variables : règle de déclaration Règles syntaxiques : Une variable en python ne peut être composée que de majuscule, de minuscules, de chiffres et du symbole tiret bas. Le nom de la variable ne peut pas commencer par un chiffre. Une variable sous Python ne peut pas porter les noms de la suite de mots clés ci-dessous : and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield.
Variables : affectation L’affectation: Créer et mémoriser un nom de variable Attribuer un type Créer et mémoriser une valeur Etablir un lien ; le nom de la variable pointe sur un emplacement de la mémoire contenant la valeur ?
Variables : quelques fonctions Exemple : >>> valeur = 10 + 1 Python évalue 10+1 et détermine le type du résultat Le résultat est stocké en mémoire à une certaine adresse Python inscrit le nom “valeur” dans la table des symboles en précisant le type et l'adresse mémoire de la valeur (si “valeur” existe alors on modifie simplement type et l'adresse mémoire) type(valeur) : affiche le type de la variable id(valeur) : affiche l'adresse mémoire print(valeur) : affiche la valeur
Variables : expression Expression : suite d'opérations utilisant des constantes, variables, fonctions... Evaluation : chaque variable ou appelle de fonction est remplacée par sa valeur
Variables : expression Evaluation possible qu'avec des types compatibles sur une opération Affectation multiple : spécifique à Python Evaluation des différentes expressions de la gauche vers la droite PUIS affectation dans les variables
Variables : expression Affectation multiple : spécifique à Python Evaluation des différentes expressions de la gauche vers la droite PUIS affectation dans les variables
Variables : opérations Opérations dépendent du type des variables Sur les nombres, on a : Addition +, soustraction –, multiplication *, division /, mise à la puissance ** Division entière //, modulo (reste de la division entière) % Priorité PEMDAS, () ,**,*,/,+,-
Variables : exercices
Variables : exercices
Types sous python Des nombres Type() Les entiers (int) Les réels à virgule flottante (float) Les complexes (complex) Les booléens (bool)
Types sous python Des séquences Les chaînes de caractères (str) Les listes (list) Les listes immuables ou n-uplet (tuple) Les listes associatives ou dictionnaire (dict) Les listes non ordonnées (set)
Fonctions: présentation Une fonction est un algorithme prenant des arguments en entrées, puis réalise une suite d'instructions et renvoie éventuellement un résultat Exemple Puis dans la console :
Fonction :Exemple Courbes de Béziers ∀𝑢∈ 0,1 𝑥 𝑢 = 𝑖=1 𝑛 𝐵 𝑖 𝑛 𝑢 𝑥 𝑖 𝑦 𝑢 = 𝑖=1 𝑛 𝐵 𝑖 𝑛 𝑢 𝑦 𝑖 Avec 𝐵 𝑖 𝑛 𝑢 = 𝑛 𝑖 𝑢 𝑖 1−𝑢 𝑛−𝑖 = 𝑛! 𝑖! 𝑛−𝑖 ! 𝑢 𝑖 1−𝑢 𝑛−𝑖 ∀𝑢∈ 0,1 𝑥 𝑢 = 𝑥 0 𝑢 2 +2 𝑥 1 𝑢 1−𝑢 + 𝑥 2 1−𝑢 2 𝑦 𝑢 = 𝑦 0 𝑢 2 +2 𝑦 1 𝑢 1−𝑢 + 𝑦 2 1−𝑢 2
Fonction : Syntaxe algorithmique algorithme CalculBezier variables u, x0, y0, x1, y1, x2, y2 : réel début fonction bezier (u,a,b,c :réel) début fonction Retourner au² +2bu(1-u)+c(1-u)² fin fonction x←bezier(u,x0,x1,x2) y←bezier(u, y0,y1,y2) afficher x,y fin Mot clé Nom Donnée et type Appel de la fonction Sortie et type
Fonctions : En Python Typographie : De manières générales Il faut mettre les 2 points : Et penser à l’indentation Typographie : Commence par “def” pour définir la fonction Puis le nom de la fonction suivie des différents arguments, puis : Chaine de caractère optionnelle permettant de décrire ce que fait la fonction. help(nom_fonction) renvoie cette chaine Suite des instructions agissant sur les arguments généralement La fin de la fonction est souvent terminée par return val
Fonction : En Python u, x0, y0, x1, y1, x2, y2=0.5,0,0,1,0,1,1 No de la fonction utile pour l’appeler u, x0, y0, x1, y1, x2, y2=0.5,0,0,1,0,1,1 def bezier (i,a,b,c,d) : return a*i*i+2*i*b*(1-i)+c*(1-i)*(1-i) x= bezier(u,x0,x1,x2) y=bezier(u, y0,y1,y2) print (x,y) Donnée d’entrée Mots clés Valeur de sortie Appel de la fonction
Fonction et variable en mémoire Variable globale -> définie en dehors de la fonction Variable locale -> définie uniquement dans une fonction et masque tout autre variable portant le même nom
Fonction : Exercice x=6 def fonction(y) : x = 3*y+2 return x x = 5 return (2*fonction(y)**2+2*y) x=fonction(x)+2*fonction2(x)-3 1190 3*5+2 2*17^2+2*5=588
Fonction : Exercice N=3 def mult_3(N) return N*N Quelle fonction multiplie l’entrée par 3 ? def mult_3(x) N=3 return N*x N=3 def mult_3(x) N=4 return N*x N=3 def mult_3(x) return N*x N=4 N=3 def mult_3(N) return N*N
Fonctions et return La fonction se termine dès qu'elle rencontre ce mot clé Sans return, la fonction ne renvoie aucun résultat, on parle de procédure
Fonctions :variables locales Les variables déclarées dans une fonction sont des variables locales en général Lors de l'appel d'une fonction, Python crée une table des symboles/valeurs locales à la fonction Lors de l'utilisation d'une variable dans une fonction, Python : Regarde dans la table des symboles locales si la variable existe Sinon regarde dans la table globale de Python Sinon il envoie un message d'erreur Attention : si la F1 est appelé par une F2, pour les instructions de F1, Python regarde dans la table locale de la F1 puis la table globale.
Fonctions Exemples:
Fonctions : variables locales Pour utiliser une variable de la table globale, on peut utiliser le mot clé global Exemples : MAIS C'EST VRAIMENT PAS BIEN DE FAIRE CA !
Fonction : conclusions Prendre des notations différentes pour les variables :
Exercices Écrire une fonction python cube(x) qui prend en argument un nombre réel x et qui renvoie la valeur x à la puissance 3.
Exercices Écrire une fonction python table(n) qui prend en argument un entier naturel n et qui affiche la table de multiplication associée à cet entier.
Exercices Un nombre est dit parfait s’il est égal à la somme de ses diviseurs stricts (l’entier 1 est compris). Par exemple, 6 est un nombre parfait 6 = 1 + 2 + 3 Ecrire une fonction parfait en python prenant en argument d’entrée n et retournant un booléen. Cette fonction renvoie True si le nombre est parfait et False sinon
Exercices Un nombre est dit parfait s’il est égal à la somme de ses diviseurs stricts (l’entier 1 est compris). Par exemple, 6 est un nombre parfait 6 = 1 + 2 + 3 Ecrire une fonction liste_parfait en Python utilisant la fonction précédente parfait. Cette fonction prend comme argument un entier naturel p et renvoie les p premiers nombre parfait
Exercices Écrire une fonction python cercle(x,y) qui prend en argument deux nombres réels x et y compris entre 0 et 1 et qui renvoie la valeur vraie (True) si la position du point M de coordonées (x,y) est compris dans le disque unité centré sur l’origine.
Exercices Écrire une fonction python pi_montecarlo(n) qui prend en argument un entier naturel n assez grand. Cette fonction doit renvoyer la valeur approximative de pi par la méthode de Monte Carlo. Pour effectuer un tirage au sort il est possible d’utiliser la fonction random de la bibliothèque random. Pour cela, l’instruction suivante doit apparaître dans votre code. from random import random()