• Aucun résultat trouvé

Programmation en Python Cours 4/8

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation en Python Cours 4/8"

Copied!
8
0
0

Texte intégral

(1)

Cours d’Informatique Scientifique

Programmation en Python Cours 4/8

Laurent Pointal

laurent.pointal @ limsi.fr

@ laposte.net

(2)

urent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 4/8 2 8

v2.2

Problème, algorithme, programmation

A partir d'un texte contenant

une série de dates de naissance, calculer la répartition

de celles-ci par mois.

Les dates sont simplement séparées par des

caractères espace ou retour à la ligne.

(3)

t PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 4/8 3 8

v2.2

Les Modules

Des fichiers de code existant à réutiliser:

Modules standards Python (~300)

Modules sur le Python Package Index (~11000) http://pypi.python.org/

Modules sur l’lnternet…

Déjà écrits, déjà testés.

Organisation de vos programmes pour pouvoir:

Séparer les différentes parties et structurer l’ensemble

En réutiliser certaines dans d’autres programmes

Partager des données par des espaces de noms

Tester séparément les parties

(4)

urent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 4/8 4 8

v2.2

Définir un module… le début

#!/bin/env python3

# -*- coding: utf-8 -*-

# Auteur: Joe Student

# Fichier: mon_premier_m.py

"""Calculs de nombres premiers.

"""

# Modules outils utilisés

import math,sys import os

# Constantes et variables globales définies

LIMITE = 10000 # Ne pas dépasser lors des calculs.

# Définition des fonctions

def est_premier(p_n) :

"""Test si p_n est un nombre premier.

"""

(5)

t PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 4/8 5 8

v2.2

Définir un module… la fin

def liste_premiers(maxn) :

"""Retourne la liste des nombres premiers jusqu'à maxn Attention: 1 < maxn <= LIMITE

"""

if __name__ == "__main__" : # Autotest du module from verif_m import verif

# Fonctionnement normal:

verif(est_premier(11),True) verif(est_premier(35),False)

verifSeq(liste_premiers(11),[2,3,5,7,11]) # Détection des erreurs par exception:

try :

liste_premiers(LIMITE+1) except ValueError :

print("Erreur liste_premiers détectée: ok")

(6)

urent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 4/8 6 8

v2.2

Définir un module… à l’IUT

if __name__ == "__main__" : # Autotest du module from verif_m import verif

# Fonctionnement normal:

verif(est_premier(11),True)

"""Traces d'exécution:

[True, True] : ok [False, False] : ok

[[2, 3, 5]..., [2, 3, 5]...] ok Erreur liste_premiers détectée

"""

Copier/coller les traces d’exécution dans une chaîne, tout à la fin.

Aucune implication sur le module et son exécution, permet de voir si

l’exécution est ok directement dans le module.

(7)

t PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 4/8 7 8

v2.2

Utiliser un module: import

Import du module en entier:

Import de certaines définitions du module:

import mon_premier_m

Fichier mon_premier_m.py ➔ module mon_premier_m

accès aux définitions du module par le nom du module (“accès par nom qualifié”)

l = mon_premier_m.liste_premiers(100) if mon_premier_m.est_premier(x) :

print(x,"n'a pas de diviseur autre que 1 et",x)

from mon_premier_m import est_premier,liste_premiers

accès direct aux définitions du module

l = liste_premiers(100)

if est_premier(x) :

(8)

urent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 4/8 8 8

v2.2

Astuces d’imports

Renomage des noms importés: as

Si trop longs ou peu explicites

Si nom déjà utilisés dans le module qui importe (collision de noms)

Import de tous les noms d’un module: *

from math import *

import GestionFichierAnnuaire as gfa import mon_premier_m as mp

from math import pi as 

from os import open as osopen

Attention avec *:

On ne sait plus d’où viennent les noms quand on relit le code

Risque de collisions de noms sans s’en apercevoir

* est à utiliser en connaissant les risques !

Références

Documents relatifs

Erire une fontion réursive et une fontion itérative pour aluler n !.. Comparer les

STEP 1: CONFIRM HIV INFECTION  YES NO • Send any test required, including confirmation test • Child under 18 months: Virological test positive• If HIV infection

- le 2ème groupe: l'infinitif se termine par -ir et fait -issons avec nous.. - le 3ème groupe : tous les autres

• Fonctions d'allocation dynamique de la mémoire (malloc, calloc et realloc) : – Chaque fonction prend une zone d'une taille donnée dans l'espace mémoire libre réservé pour.

– Pour pouvoir travailler avec un fichier dans un programme, ranger l'adresse de la structure FILE dans le pointeur de fichier et tout accès ultérieur au fichier se fait

urent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 5/8 12

Laurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 7/8 3

urent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 8/8 4