Initiation à la programmation ENSAE 1A

ecrit_2010.tex

File: ecrit_2010.tex, line 46


l = []
for i in range (0, 4) :
    c = []
    for j in range (0, i) : c += [ j ]  # ou c.append (j)
    l += [ c ]                          # ou l.append (c)

for c in l : print c

File: ecrit_2010.tex, line 58


l = [1,4,1,5,9]
d = { }
for u in l :
    if u in d : d [u] += 1
    else : d [u] = 1
        
print d

File: ecrit_2010.tex, line 76


[]
[0]
[0, 1]
[0, 1, 2]

File: ecrit_2010.tex, line 85


{1: 2, 4: 1, 5: 1, 9: 1}

File: ecrit_2010.tex, line 109


n = 10
l = [i for i in (0,n)]
l[9]

File: ecrit_2010.tex, line 117


  File "ecrit.py", line 3, in <module>
    l[9]
IndexError: list index out of range

File: ecrit_2010.tex, line 129


d = {'un': 1, 'deux': 4}
print deux


File: ecrit_2010.tex, line 137


  File "ecrit.py", line 2, in <module>
    print deux
NameError: name 'deux' is not defined

File: ecrit_2010.tex, line 149


l = [ "mot", "second" ]
print l(0)


File: ecrit_2010.tex, line 157


  File "ecrit.py", line 2, in <module>
    print l(0)
TypeError: 'list' object is not callable

File: ecrit_2010.tex, line 171


l = [4, 2, 1, 3]
ll = l.sort()
print ll[0]

File: ecrit_2010.tex, line 179


  File "ecrit.py", line 2, in <module>
	  print ll[0]
TypeError: 'NoneType' object is unsubscriptable

File: ecrit_2010.tex, line 194


n = 10
l = [i for i in (0,n)]
print l                    # affiche [0, 10]

File: ecrit_2010.tex, line 200


l = [i for i in range (0,n)]

File: ecrit_2010.tex, line 210


l = [4, 2, 1, 3]
ll = list (l)
ll.sort()
print ll[0]

File: ecrit_2010.tex, line 219


l = [4, 2, 1, 3]
print min(l)

File: ecrit_2010.tex, line 240


i = random.randint (0,n) # tire aléatoirement un nombre entier entre 0 et n inclus

l.sort ()                # trie la liste l quel que soit son contenu

File: ecrit_2010.tex, line 248


l = [4,5,3,7,4]
l.sort ()
print l             # affiche [3, 4, 4, 5, 7]

File: ecrit_2010.tex, line 256


l = [ (1,2), (0,10), (4,3), (5,0), (0,9) ]
l.sort ()
print l             # affiche [(0, 9), (0, 10), (1, 2), (4, 3), (5, 0)]

File: ecrit_2010.tex, line 264


def permutation_aleatoire (l) :
    ....
    return ...
    
print permutation_aleatoire ([1,2,3,4])   # affiche [3,1,4,2]

File: ecrit_2010.tex, line 281


tab = ["zéro", "un", "deux"] # tableau à trier
pos = [ (tab [i],i) for i in range (0, len (tab)) ] # tableau de couples
pos.sort () # tri
print pos # affiche [('deux', 2), ('un', 1), ('zéro', 0)]

File: ecrit_2010.tex, line 290


from random import randint

def permutation (liste) :
    alea        = [ randint (0,len (liste)) for i in liste ]
    couple      = [ (r,l) for r,l in zip (alea,liste) ]
    couple.sort ()
    permutation = [ l[1] for l in couple ]
    return permutation

liste = [ i*2 for i in range (0,10) ]
permu = permutation (liste)
print liste  # affiche [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
print permu  # affiche [2, 6, 16, 10, 8, 14, 0, 12, 18, 4]

File: ecrit_2010.tex, line 308


from random import randint
import copy

def permutation (liste) :
    li = copy.copy (liste)
    for i in xrange (0, len (liste)) :
        n = randint (0, len (liste)-1)
        m = randint (0, len (liste)-1)
        s = li [n]
        li [n] = li [m]
        li [m] = s
    return li

File: ecrit_2010.tex, line 325


from random import randint
import copy

def permutation (liste) :
    li = copy.copy (liste)
    for i in xrange (0, len (liste)) :
        n = i
        m = randint (0, len (liste)-1)
        s = li [n]
        li [n] = li [m]
        li [m] = s
    return li

File: ecrit_2010.tex, line 342


from random import randint
import copy

def permutation (liste) :
    li = [ ]
    n  = len (liste)
    for i in xrange (0, n) :
        m = randint (0, len (liste)-1)
        li.append (liste [m])
        del liste [m]          # on supprime l'élément tiré au hasard
    return li

File: ecrit_2010.tex, line 358


from random import randint
import copy

def permutation (liste) :
    li = [ ]
    n  = len (liste)
    for i in xrange (0, n) :
        m = randint (0, len (liste)-1)
        if liste [m] not in li : 
            li.append (liste [m])
    return li

File: ecrit_2010.tex, line 391


def nom_csp (csp) :                      # csp est un entier compris entre 1 et 4
    if   csp == 1  : return "cat. A"           
    elif csp == 2  : return "cat. B"
    elif csp == 3  : return "cat. C"
    else           : return "cat. D"

File: ecrit_2010.tex, line 405


def nom_csp (csp) :                      # csp est un entier compris entre 1 et 4
    if csp <= 2  : 
        if csp == 1 : return "cat. A"           
        else        : return "cat. B"                
    else :
        if csp == 3 : return "cat. C"
        else        : return "cat. D"

File: ecrit_2010.tex, line 450


def nom_csp (csp) :
    if   csp == 3  : return "cat. C"           
    elif csp == 1  : return "cat. A"
    elif csp == 2  : return "cat. B"
    else           : return "cat. D"

File: ecrit_2010.tex, line 513


def calculeN (I,J) :  # I et J sont des entiers comme par exemple I=3 et J=5
    
    nombre = [ [0 for i in range (0, J) ] for i in range (0, I) ]
      # nombre est alors égal à [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
        
    for i in range (0, I) : 
        nombre [i][0] = 1
        
    for j in range (0, I) : 
        nombre [0][j] = 1
        
    for i in range (1, I) : 
        for j in range (1, J) :
            nombre [i][j] = nombre [i-1][j] + nombre [i][j-1] 
            
    return nombre

nombre = calculeN (3,5)
for l in nombre : print l

File: ecrit_2010.tex, line 536


[1, 1, 1, 0, 0]
[1, 2, 3, 3, 3]
[1, 3, 6, 9, 12]

File: ecrit_2010.tex, line 572


for j in range (0, I) :   # il faut écrire range (0, J)
    nombre [0][j] = 1

File: ecrit_2010.tex, line 578


[1, 1, 1, 1, 1]
[1, 2, 3, 4, 5]
[1, 3, 6, 10, 15]

File: ecrit_2010.tex, line 589


def calculeN (I,J) : 
    
    nombre = [ [0 for i in range (0, J) ] for i in range (0, I) ]
        
    for i in range (0, I) : 
        nombre [i][0] = 1
        
    for j in range (1, J) : 
        nombre [0][j] = 1
    nombre [0][1:5] = [2,] * (J-1)  ##### ligne ajoutée
        
    for i in range (1, I) : 
        for j in range (1, J) :
            nombre [i][j] = nombre [i-1][j] + nombre [i][j-1] 
            
    return nombre

nombre = calculeN (3,5)
for l in nombre : print l

File: ecrit_2010.tex, line 612


[1, 2, 2, 2, 2]
[1, 3, 5, 7, 9]
[1, 4, 9, 16, 25]

File: ecrit_2010.tex, line 641


def generation_ensemble (n, s, s1, s2) :
    l     = [ ]
    alpha = s * s2 / s1
    beta  = s2 * (1.0 - s**2) ** 0.5
    for i in range (0, n) :
        x     = random.gauss (0,s1)
        u     = random.gauss (0,1.0)
        y     = alpha * x + beta * u
        l [i] = [ [x,y] ]              # ligne 26
    return l

File: ecrit_2010.tex, line 656


Traceback (most recent call last):
  File "examen2010.py", line 62, in <module>
    points       = generation_ensemble (50000, 1., 2., 6., 0.5)
  File "examen2010.py", line 26, in generation_ensemble
    l [i] = [ [x,y] ]
IndexError: list assignment index out of range

File: ecrit_2010.tex, line 671


def generation_ensemble2 (n, s, s1, s2) :
    l = [ ]
    a = s * 100
    for i in range (0, n) :
        x  = random.gauss (0,s1)
        if (i % 100) <= a :           # le symbole % désigne le modulo:  
                                      # i % 100 est le reste de la division de i par 100
            y = x * s2 / s1
        else :
            y = random.gauss (0,s2)
        l += [ [x,y] ]
    return l