Shopy 101
← Modules Sign in to download
Fonctions Fonctions
Exercices sur les bases du langage Exercices sur les bases du langage
Partie 1 - Introduction
  1. Avant-propos à l'attention des non-programmeurs Une version complète existe
  2. Introduction Une version complète existe
  3. Installation Une version complète existe
  4. Éditeurs Une version complète existe
  5. Programmer en deux minutes Une version complète existe
Partie 2 - Le langage
  1. Afficher un texte Une version complète existe
  2. Structure d'un programme Une version complète existe
  3. Variables Une version complète existe
  4. Opérateurs Une version complète existe
  5. Structures de contrôle Une version complète existe
  6. Instructions répétitives Une version complète existe
  7. Types Une version complète existe
  8. Fonctions Une version complète existe
  9. Modules Une version complète existe
  10. Exercices Une version complète existe
  11. Regex Une version complète existe
  12. Programmation orientée objet pour les non-programmeurs Une version complète existe
  13. Classes Une version complète existe
  14. Classes et Interfaces graphiques Une version complète existe
  15. Fichiers Une version complète existe
  16. Exceptions Une version complète existe
  17. Bases de données  </span>%"}'>Fait à environ 50 %
  18. L'interface CGI En cours
  19. Applications web En cours de finition
  20. Réseau En cours
  21. Threads  </span>%"}'>Fait à environ 50 %
Partie 3 - Les bibliothèques
  1. Bibliothèques pour Python En cours
  2. L'interface graphique En cours
  3. Utilisation de fenêtres et de graphismes En cours de finition
  4. Les threads En cours
  5. XML  </span>%"}'>Fait à environ 50 %
  6. JSON  </span>%"}'>Fait à environ 50 %
  7. Tests En cours
  8. Analyse statique de programmes En cours
  9. Fabric En cours
  10. Le Web
Wikilivres connexes
Partie 1 - Introduction
  1. Avant-propos à l'attention des non-programmeurs Une version complète existe
  2. Introduction Une version complète existe
  3. Installation Une version complète existe
  4. Éditeurs Une version complète existe
  5. Programmer en deux minutes Une version complète existe
Partie 2 - Le langage
  1. Afficher un texte Une version complète existe
  2. Structure d'un programme Une version complète existe
  3. Variables Une version complète existe
  4. Opérateurs Une version complète existe
  5. Structures de contrôle Une version complète existe
  6. Instructions répétitives Une version complète existe
  7. Types Une version complète existe
  8. Fonctions Une version complète existe
  9. Modules Une version complète existe
  10. Exercices Une version complète existe
  11. Regex Une version complète existe
  12. Programmation orientée objet pour les non-programmeurs Une version complète existe
  13. Classes Une version complète existe
  14. Classes et Interfaces graphiques Une version complète existe
  15. Fichiers Une version complète existe
  16. Exceptions Une version complète existe
  17. Bases de données  </span>%"}'>Fait à environ 50 %
  18. L'interface CGI En cours
  19. Applications web En cours de finition
  20. Réseau En cours
  21. Threads  </span>%"}'>Fait à environ 50 %
Partie 3 - Les bibliothèques
  1. Bibliothèques pour Python En cours
  2. L'interface graphique En cours
  3. Utilisation de fenêtres et de graphismes En cours de finition
  4. Les threads En cours
  5. XML  </span>%"}'>Fait à environ 50 %
  6. JSON  </span>%"}'>Fait à environ 50 %
  7. Tests En cours
  8. Analyse statique de programmes En cours
  9. Fabric En cours
  10. Le Web
Wikilivres connexes

Définition

Vous avez déjà rencontré des fonctions intégrées au langage lui-même, comme la fonction len(), par exemple, qui permet de connaître la longueur d'une chaîne de caractères. Les fonctions intégrées au langage sont relativement peu nombreuses : ce sont seulement celles qui sont susceptibles d'être utilisées très fréquemment. Les autres sont regroupées dans des fichiers séparés que l'on appelle des modules.

Les modules sont donc des fichiers qui regroupent des ensembles de fonctions. En effet, il peut être commode de découper un programme important en plusieurs fichiers de taille modeste pour en faciliter la maintenance et le travail collectif. Une application Python typique sera alors constituée d'un programme principal accompagné de un ou plusieurs modules contenant chacun les définitions d'un certain nombre de fonctions accessoires.

Il existe un grand nombre de modules pré-programmés qui sont fournis d'office avec Python. Vous pouvez en trouver d'autres chez divers fournisseurs. Souvent on essaie de regrouper dans un même module des ensembles de fonctions apparentées que l'on appelle des bibliothèques.

Un module peut être appelé depuis plusieurs programmes, il s'agit d'un fichier .py commençant par son identité (qui ne contient pas de point).

N'importe quel fichier .py peut donc être appelé depuis un autre comme un module[1]. Il peut contenir :

du script
des fonctions
des classes
...

Importer un module

Pour utiliser des fonctions de modules dans un programme, il faut au début du fichier importer ceux-ci.

Pour ce faire, utiliser la commande "import" :

import os
import codecs

Sur la même ligne (syntaxe déconseillée[2]) :

import os, codecs

Ou encore en sélectionnant certains ou tous les éléments d'un fichier :

from pywikibot import *

À noter : cette dernière méthode est dangereuse, car des objets du module portant le même nom que des objets du programme peuvent s'écraser l'un l'autre. Mieux vaut donc les nommer explicitement :

from pywikibot import pagegenerators

Le module math, par exemple, est fournit avec Python, et contient les définitions de nombreuses fonctions mathématiques telles que sinus, cosinus, tangente, racine carrée, etc. Pour pouvoir utiliser ces fonctions, il vous suffit d'incorporer la ligne suivante au début de votre script :

from math import *

Dans le corps du script lui-même, vous écrirez par exemple :

racine = sqrt(nombre) pour assigner à la variable "racine" la racine carrée de nombre, sinusx = sin(angle) pour assigner à la variable "sinusx" le sinus de angle (en radians !), etc.

Modules personnalisés

Pour créer son propre module et l'importer dans un autre fichier, il faut :

  • Soit que le module existe sous la forme d'un fichier .py situé dans le même dossier que le fichier qui l'importe. Exemple :
import Fichier1
Fichier1.fonction1()

Pour changer le préfixe :

import Fichier1 as F1
F1.fonction1()

Pour supprimer le préfixe :

from Fichier1 import *
fonction1()
  • Soit qu'il soit dans un autre dossier du programme, contenant un fichier __init__.py joutant le rôle de relais en important tous fichiers situés à côté de lui, ce qui permettra à toutes les fonctions de ce dossier d'être accessibles par le nom du dossier. Exemple dans un dossier "lib" :
from Fichier1 import *
from Fichier2 import *
from Fichier3 import *

__all__ = ["Fichier1", "Fichier2", "Fichier3"]

Dans le dossier parent :

import lib
fonction1()

Liste des modules standards

Les modules standards les plus importants sont[3] :

  • cgi
  • math
  • os
  • pickle
  • random
  • re
  • socket
  • sys
  • time
  • urllib

Exemple du module "math"

\n\nfrom math import *\n\nnombre = 121\nangle = pi/6\t# soit 30° (la bibliothèque math inclut aussi la définition de pi) \nprint 'racine carrée de', nombre, '=', sqrt(nombre)\nprint 'sinus de', angle, 'radians', '=', sin(angle)\n"}}'>
# Démo : utilisation des fonctions du module <math>

from math import *

nombre = 121
angle = pi/6	# soit 30° (la bibliothèque math inclut aussi la définition de pi) 
print 'racine carrée de', nombre, '=', sqrt(nombre)
print 'sinus de', angle, 'radians', '=', sin(angle)

L'exécution de ce script provoque l'affichage suivant :

racine carrée de 121 = 11.0
sinus de 0.523598775598 radians = 0.5

Ce court exemple illustre déjà fort bien quelques caractéristiques importantes des fonctions :

  • une fonction apparaît sous la forme d'un nom quelconque associé à des parenthèses. Exemple : sqrt()
  • dans les parenthèses, on transmet à la fonction un ou plusieurs arguments. Exemple : sqrt(121)
  • la fonction fournit une valeur de retour (on dira aussi qu'elle « renvoie » une valeur). Exemple : 11.0

Nous allons développer tout ceci dans les pages suivantes. Veuillez noter au passage que les fonctions mathématiques utilisées ici ne représentent qu'un tout premier exemple. Un simple coup d'œil dans la documentation des bibliothèques Python vous permettra de constater que de très nombreuses fonctions sont d'ores et déjà disponibles pour réaliser une multitude de tâches, y compris des algorithmes mathématiques très complexes (Python est couramment utilisé dans les universités pour la résolution de problèmes scientifiques de haut niveau). Il est donc hors de question de fournir ici une liste détaillée. Une telle liste est aisément accessible dans le système d'aide de Python :

Documentation HTML ® Python documentation ® Modules index ® math

Au chapitre suivant, nous apprendrons comment créer nous-mêmes de nouvelles fonctions.

raw_input()</code> pour l'entrée des données)''\n<ol>\n<li>Écrivez un programme qui convertisse en mètres par seconde et en km/h une vitesse fournie par l'utilisateur en miles/heure. (Rappel : 1 mile = 1609 mètres)</li>\n\n<li>Écrivez un programme qui calcule le périmètre et l'aire d'un triangle quelconque dont l'utilisateur fournit les 3 côtés.\n(Rappel : l'aire d'un triangle quelconque se calcule à l'aide de la formule :<br />\n<math>S = \\sqrt{d \\times (d-a) \\times (d-b) \\times (d-c)}</math>\ndans laquelle d désigne la longueur du demi-périmètre, et a, b, c celles des trois côtés).</li>\n\n<li>Écrivez un programme qui calcule la période d'un pendule simple de longueur donnée.\nLa formule qui permet de calculer la période d'un pendule simple est <math>T = 2\\pi \\sqrt{\\frac{l}{g}}</math>,\nl représentant la longueur du pendule et g la valeur de l'accélération de la pesanteur au lieu d'expérience.</li>\n\n<li>Écrivez un programme qui permette d'encoder des valeurs dans une liste. Ce programme devrait fonctionner en boucle, l'utilisateur étant invité à entrer sans cesse de nouvelles valeurs, jusqu'à ce qu'il décide de terminer en frappant <enter> en guise d'entrée. Le programme se terminerait alors par l'affichage de la liste. Exemple de fonctionnement :\n<pre>\nVeuillez entrer une valeur : 25\nVeuillez entrer une valeur : 18\nVeuillez entrer une valeur : 6284\nVeuillez entrer une valeur :\n[25, 18, 6284]\n</pre></li>\n</ol>\n\n",{"template":{"target":{"wt":"solution","href":"./Modèle:Solution"},"params":{},"i":1}},"\n<ol>\n<li>\n<syntaxhighlight lang=\"python\">\n# Conversion de miles/heure en km/h et m/s\n\nprint \"Veuillez entrer le nombre de miles parcourus en une heure : \",\nch = raw_input() # en général préférable à input()\nmph = float(ch) # conversion de la chaîne entrée en nombre réel\nmps = mph * 1609 / 3600 # conversion en mètres par seconde\nkmph = mph * 1.609 # conversion en km/h\n# affichage :\nprint mph, \"miles/heure =\", kmph, \"km/h, ou encore\", mps, \"m/s\"\n</syntaxhighlight>\n</li>\n\n<li>\n<syntaxhighlight lang=\"python\">\n# Périmètre et Aire d'un triangle quelconque\n\nfrom math import sqrt\n\nprint \"Veuillez entrer le côté a : \"\na = float(raw_input())\nprint \"Veuillez entrer le côté b : \"\nb = float(raw_input())\nprint \"Veuillez entrer le côté c : \"\nc = float(raw_input())\nd = (a + b + c)/2 # demi-périmètre\ns = sqrt(d*(d-a)*(d-b)*(d-c)) # aire (suivant formule)\n\nprint \"Longueur des côtés =\", a, b, c\nprint \"Périmètre =\", d*2, \"Aire =\", s\n</syntaxhighlight>\n</li>\n\n<li>Réfléchissez !</li>\n\n<li>\n<syntaxhighlight lang=\"python\">\n# Entrée d'éléments dans une liste\n\ntt = [] # Liste à compléter (vide au départ)\nch = \"start\" # valeur quelconque (mais non nulle) \nwhile ch != \"\":\n print \"Veuillez entrer une valeur : \"\n ch = raw_input()\n if ch != \"\":\n tt.append(float(ch)) # variante : tt.append(ch) \n\n# affichage de la liste :\nprint tt\n</syntaxhighlight>\n</li>\n</ol>\n</ol>\n",{"template":{"target":{"wt":"fin","href":"./Modèle:Fin"},"params":{},"i":2}}]}'>

Exercices

(Note : Dans tous ces exercices, utilisez la fonction raw_input() pour l'entrée des données)
  1. Écrivez un programme qui convertisse en mètres par seconde et en km/h une vitesse fournie par l'utilisateur en miles/heure. (Rappel : 1 mile = 1609 mètres)
  2. Écrivez un programme qui calcule le périmètre et l'aire d'un triangle quelconque dont l'utilisateur fournit les 3 côtés. (Rappel : l'aire d'un triangle quelconque se calcule à l'aide de la formule :
    {\displaystyle S={\sqrt {d\times (d-a)\times (d-b)\times (d-c)}}} dans laquelle d désigne la longueur du demi-périmètre, et a, b, c celles des trois côtés).
  3. Écrivez un programme qui calcule la période d'un pendule simple de longueur donnée. La formule qui permet de calculer la période d'un pendule simple est {\displaystyle T=2\pi {\sqrt {\frac {l}{g}}}}, l représentant la longueur du pendule et g la valeur de l'accélération de la pesanteur au lieu d'expérience.
  4. Écrivez un programme qui permette d'encoder des valeurs dans une liste. Ce programme devrait fonctionner en boucle, l'utilisateur étant invité à entrer sans cesse de nouvelles valeurs, jusqu'à ce qu'il décide de terminer en frappant <enter> en guise d'entrée. Le programme se terminerait alors par l'affichage de la liste. Exemple de fonctionnement :
    Veuillez entrer une valeur : 25
    Veuillez entrer une valeur : 18
    Veuillez entrer une valeur : 6284
    Veuillez entrer une valeur :
    [25, 18, 6284]
    

Solution

  1. # Conversion de miles/heure en km/h et m/s
    
    print "Veuillez entrer le nombre de miles parcourus en une heure : ",
    ch = raw_input()            # en général préférable à input()
    mph = float(ch)             # conversion de la chaîne entrée en nombre réel
    mps = mph * 1609 / 3600     # conversion en mètres par seconde
    kmph = mph * 1.609          # conversion en km/h
    # affichage :
    print mph, "miles/heure =", kmph, "km/h, ou encore", mps, "m/s"
    
  2. # Périmètre et Aire d'un triangle quelconque
    
    from math import sqrt
    
    print "Veuillez entrer le côté a : "
    a = float(raw_input())
    print "Veuillez entrer le côté b : "
    b = float(raw_input())
    print "Veuillez entrer le côté c : "
    c = float(raw_input())
    d = (a + b + c)/2                # demi-périmètre
    s = sqrt(d*(d-a)*(d-b)*(d-c))    # aire (suivant formule)
    
    print "Longueur des côtés =", a, b, c
    print "Périmètre =", d*2, "Aire =", s
    
  3. Réfléchissez !
  4. # Entrée d'éléments dans une liste
    
    tt = []             # Liste à compléter (vide au départ)
    ch = "start"        # valeur quelconque (mais non nulle) 
    while ch != "":
        print "Veuillez entrer une valeur : "
        ch = raw_input()
        if ch != "":
            tt.append(float(ch))        # variante : tt.append(ch)    
    
    # affichage de la liste :
    print tt
    

Références