Initiation à la programmation ENSAE 1A

seance3_fonction_dictionnaire.tex

une fonction qui calcule un polynôme

     
def polynome ( x ) :
    return x*x + x - 5

une fonction qui calcule un polynôme quelconque

   
def polynome ( x, coefficient ) :
    return sum ( [ x**i * c for i,c in enumerate(coefficient) ] )

appel d'une fonction

   
y = polynome ( 1.2, [ 1, 2, -1] )  # calcul de -x^2 + 2x + 1 pour x = 1.2

fonction avec valeur par défaut

   
from math import log  # on importe une fonction existante
def log_base ( x, base = 10 ) :
    return log (x) / log(base)

appel d'une fonction avec valeur par défaut

   
y = log_base (1000)      # identique à y = log_base (1000, 10)
z = log_base (1000, 2)   # logarithme en base deux

deux fonctions avec le même noms

   
def polynome ( x ) :       # remplacée par la seconde fonction
    return x*x + x - 5
def polynome ( x, coefficient ) :
    return sum ( [ x**i * c for i,c in enumerate(coefficient) ] )

chr et ord

  
print ( chr( 65 ), chr (97) )
print ( ord("B"), ord ("b") )

exercice

  
def lettre_suivante(lettre) :
    # ....
    return ....

variable locale

  
def calcul(x) :
    y = x**2
    z = x + y
		
print (z)

erreur

  
Traceback (most recent call last):
  File "e.py", line 6, in <module>
    print (z)
NameError: name 'z' is not defined

fonction sans résultat

  
def calcul(x) :
    y = x**2
    z = x + y

a = calcul(x)
print (a)       # affiche None

plusieurs return

  
def valeur_absolue(x) :
    if x < 0 : 
        return -x
    else :
        return x

fonction récursive

  
def recursive(x) :
    if x / 2 < 1 : return 1
    else : return recursive (x/2) + 1

un dictionnaire

  
d = { }   # un dictionnaire vide
d = { 'a' : 'acronym', 'b': 'bizarre' }  # un dictionnaire qui associe 'acroym' à 'a' et 'bizarre' à 'b'.
z = d ['a']   # z reçoit la valeur associée à 'a' et stockée dans le dictionnaire d

quelques fonctions

  
d = { 'a' : 'acronym', 'b': 'bizarre' }  
l = len(d)    # retourne le nombre d'élément de d
b = 'a' in d  # b vaut True si une valeur est associée à 'a', on dit aussi que la clé 'a' est présente 
x = d.get ('a', '')  # x vaut d['a'] si la clé 'a' existe, il vaut '' sinon 

compter les lettres

  
texte = "exemple de texte"
d = { }
for c in texte :
    d[c] = d.get(c,0) + 1
print (d)		
# affiche {'a': 1, 'p': 1, 'e': 5, 'd': 1, ' ': 2, 'x': 2, 't': 2, 'm': 1, 'l': 1}

une liste pour clé

  
f = [3,4]
d[f] = 0

erreur

  
Traceback (most recent call last):
  File "e.py", line 2, in <module>
    d[f] = 0
TypeError: unhashable type: 'list'

clé

  
d = { }
d['a'] = 0   # création d'une clé
d['a'] = 1   # remplacement d'une valeur

dictionnaire compact


d = { s:len(s) for s in ['un', 'deux', 'trois'] }

liste de mots


mots = ['eddard', 'catelyn', 'robb', 'sansa', 'arya', 'brandon',
        'rickon', 'theon', 'rorbert', 'cersei', 'tywin', 'jaime',
        'tyrion', 'shae', 'bronn', 'lancel', 'joffrey', 'sandor',
        'varys', 'renly', 'a' ]

signature


def mots_lettre_position (liste, lettre, position) :
    # ....
    return [ .... ]

signature


def mots_lettre_position (dictionnaire_bien_choisi, lettre, position) :
    return dictionnaire_bien_choisi. get ( .... , [] )

code César


JENESUISPASCODE
MHQHVXLVSDVFRGH

signature code Vigenère


def code_vigenere ( message, cle) :
    # ....
    return message_code