Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Sachez que, sans le savoir, vous avez déjà utilisé de nombreuses fonctions natives de Python : print(), len(), type(), list(), etc.
Ci-desssous tableau de toutes les fonctions natives ou internes ("built-in functions" en anglais)de Python :
Ces fonctions sont toujours disponibles !
Il faut savoir manipuler ces fonctions.
Ci-dessous une série de commmandes pour vous familiariser avec les plus importantes de ces fonctions.
Testez ces commandes dans la console interactive !
Ces fonctions sont dites aussi génériques car elles peuvent s'appliquer à différents types de données à la différence
des méthodes de classe ...
Ainsi je vous montre que les fonctions min() & max() peuvent avoir pour argument une liste ou une chaine.
Par contre on ne peut argumenter la fonction sum avec une chaine.
La fonction round(nombre décimal,n) arrondit à l'entier le plus proche OU au nombre de décimales si un deuxième argument est précisé.
La fonction pow(x,n ) élève x à la puissance n
eval(chaine numérique) : convertit une chaine en flottant à condition que cette chaine ait un format numérique (suite de chiffres avec un point
éventuel en guise de séparateur décimal). La fonction float() fait la même chose.
Attention la fonction int() ne peut pas convertir directement une chaine numérique en entier.
Vous devez donc imbriquer deux fonctions : int(eval/float(chaine numérique)).
La fonction native la plus importante est certainement print() ; elle permet d'afficher les résultats des traitements.
Elle est facultative en mode commandes mais incontournable en mode programmé.
Commandes à saisir dans la console interactive :
Notez bien la syntaxe : print(f"le contenu de a est {a}").
Pour préciser une chaine formatée il faut insérer la lettre "f" juste après la parenthèse ouvrante et avant les guillemets.
On peut afficher dans une chaine formatée des variables à condition qu'elles soient délimitées par des accolades.
Attention après une instruction print() il y a un saut de ligne.
Mais ce saut de ligne peut être évité avec l'argument "end:". Voir exemple ci-dessous.
Pas de saut de ligne après chaque instruction print() mais affichage d'un tiret (argument du mot reservé "end").
Vous pouvez avoir besoin de créer vos propres fonctions, si vous n'avez pas trouvé votre bonheur dans la liste des 72 fonctions natives.
Sachez cependant que des modules (tels le module math) proposent aussi de nombreuses fonctions.
Soit la fonction (mathématique) y = x2 + 5 (donc une parabole)
On veut déterminer la valeur de y pour différentes valeurs de x afin de pouvoir faire une représentation graphique de cette fonction (dessiner la parabole).
C'est un peu fastidieux et pourtant je n'ai demandé que trois valeurs Y (respectivement pour x =-5, 0 et 5) Il y a une solution beaucoup plus élégante : écrire ce qu'on appelle en informatique une fonction (et oui c'est le même terme !).
Une fonction pour un informaticien est une routine qui peut être appelée N fois, avec à chaque fois passage d'une valeur (ici ce sera la valeur de x).
La routine retourne à chaque fois une valeur (ici ce doit être la valeur de y).
Vous avez déjà utilisé des fonctions natives de Python : len(), type(), list(), print(), range(), ...
Vous savez qu'il faut en général saisir quelque chose entre les parenthèses : un ou plusieurs arguments.
Par exemple : range(n1,n2,pas) avec n1: 1er terme ; n2 : dernier terme exclu.
Je tape donc dans la console :
La console me dit qu'il y a une erreur de syntaxe : une indentation non respectée.
Dans beaucoup de langages un bloc d'instructions doit être entre accolades ; dans Python le bloc d'instructions doit être indenté par rapport à l'instruction
qui pilote ce bloc (ici c'est la ligne avec le mot clé "def").
La première ligne doit se terminer par " :" (début de bloc) puis vous tapez deux fois sur ENTER
Avant de saisir la deuxième ligne il faut appuyer sur la touche TAB pour créer une indentation (vous pouvez aussi appuyer 4 fois sur la touche "espace").
Je dois donc écrire dans la console :
Après avoir saisi la deuxième ligne tapez deux fois sur ENTER ; si l'invite de commande réapparait (les trois chevrons) c'est que la syntaxe est bonne.
def f(x) : : définition de la fonction (avec le mot réservé def). Cette fonction est nommée "f" avec passage d'un paramètre : valeur de x.
return x**2+5 : l'expression "x**2+5" est évaluée en fonction de la valeur de x saisie ; le résultat est retourné.
Maintenant je peux appeler N fois ma fonction personnelle nommée "f" pour déterminer N valeurs de Y.
Je connais désormais cinq couples (x,y) donc je peux tracer la parabole dans un repère cartésien.
Nous verrons plus tard que le tracé peut être automatisé grâce à un module de Python.
Revenons sur la création de fonctions personnelles.
Création d'une fonction personnelle basée sur l'équation : y = x2 + 10
Vous allez me dire que l'on a déjà fait.
C'est vrai mais cette fois j'emploie dans le code la fonction native pow(x,n) : élève x à la puissance n.
pow(x,2) élève à la puissance 2 le contenu de la variable x.
Ma fonction se nomme "parabole".
Le bloc d'instructions de cette fonction comprend deux lignes, toutes deux doivent être indentées par rapport à la ligne "def ...".
La surface d'un cercle = rayon2 * 3.14
Je dois donc écrire dans l'interpréteur :
Donc si le rayon est 10 cm alors la surface est 314 cm2
Si le rayon est 20 m alors la surface est 1256 m2.
Et si on veut qu'une seule fonction calcule à partir du rayon : l'aire mais aussi la circonférence du cercle et retourne donc
les deux résultats. Est-ce possible avec Python ?
Oui une fonction peut retourner plusieurs valeurs.
Observez attentivement l'exemple ci-dessous :
En effet 13 = 4 * 3 + 1
Cette fonction retourne sous forme d'un tuple le quotient et le reste de la division euclidienne (ou division entière).
Notez aussi que cette fonction perso comprend deux paramètres : dividende et diviseur.
La notion de tuple sera approfondie plus tard.
A vous de jouer !
Creéz la fonction nommée "cercle" qui calcule la surface et la circonfère d'un cercle à partir du rayon.
En plus des fonctions natives (fonctions dans le module de base), Python proposent des fonctions dans différents modules. Pour disposer de ces fonctions, il faut donc activer les modules en question.
Thème : je veux calculer la racine carré de 25. Je sais qu'il existe une fonction native de Python qui fait ce travail : sqrt().
l'interpréteur me dit que la fonction sqrt() n'est pas définie ...
En effet cette fonction existe bien mais elle fait partie du module math, module qui n'a pas été importé ...
Solution :
Pour accéder à toutes les fonctions du module math il suffit de taper la commande from math import *
from math import * : importation de la totalité du module math
Désormais l'interpréteur comprend une commande basée sur la méthode sqrt().
tapez la commande dir(math) :
Il y a de quoi s'amuser pour un mathématicien ...
Sans être fort en math, vous devinez qu'il y a des fonctions de trigonométrie. J'aurais l'occasion d'y revenir ...
Il y a aussi une fonction nommée "factorial" ...
Il existe un autre module qu'il faut souvent utiliser : random.
En anglais “random” signifie “le hasard”. Ce module propose des fonctions pour générer un réel, un entier de façon aléatoire, etc.
Donc si vous voulez programmer des jeux simulant le hasard, ce module est incontournable.
Commandes à saisir dans l'interpéteur :
from random import * : importation de la totalité du module random.
En résumé vous pouvez produire vos propres fonctions mais surtout "ne réinventez pas la roue". Avant de vous lancez dans la création d'une fonction
difficile, recherchez sur la "toile" pour savoir si elle n'existe pas en tant que fonction générique ou dans un module.
Je vais prendre un exemple pour illustrer mon propos. Supposons que vous deviez calculer le plus grand commun diviseur de plusieurs nombres.
Allez sur le web, vous verrez que l'algorithme correspondant est plutôt complexe.
Or la fonction existe dans Python, non pas dans le noyau de base mais dans le module math. Il suffit donc d'importer ce module.
La solution tient en deux lignes de commandes :
Le plus grand commun diviseur à 60,50,40,30 est le nombre 10 !
Il existe aussi dans ce module la fonction factorial() ... D'après vous à quoi sert-elle ?
Il y a 72 fonctions internes. Certaines sont très utiles en mathématiques. Aussi faut-il les évoquer.
Attention pour les fonctions bin(),oct(), hex() les deux premièrs caractères de la réponse précisent la base : "0b" ou "0o" ou "0x".
Donc la fonction perso division_entiere() était totalement inutile (sauf sur un plan pédagogique) puisque la fonction générique divmod fait la même chose ...