Initiation à la programmation ENSAE 1A

ecrit_2007.tex

File: ecrit_2007.tex, line 28


def fonction_log2 (k) :
    n = 0
    while 2**n < k :
        n += 1
    return n

File: ecrit_2007.tex, line 38


def fonction_log2 (k) :
    for i in range (0,1000) :
        if 2**i >= k :
            return i

File: ecrit_2007.tex, line 47


def fonction_log2 (k) :
    if k <= 1 : return 0
    else : return fonction_log2 ((k+1)/2)+1

File: ecrit_2007.tex, line 63


def parcours (n) :
    i = 1
    j = 1
    while i+j < n :
        print (i,j)
        i += 1
        j -= 1
        if j < 1 :
            j = i+j
            i = 1

File: ecrit_2007.tex, line 101


(1,1)
(1,2)
(2,1)
(1,3)
(2,2)
(3,1)



File: ecrit_2007.tex, line 115


(1,4)
(2,3)
(3,2)
(4,1)
(1,5)
(2,4)
(3,3)
...

File: ecrit_2007.tex, line 130


i += 1
j -= 1

File: ecrit_2007.tex, line 137


if j < 1 :
    j = i+j
    i = 1

File: ecrit_2007.tex, line 155


def suite (n) :
    n = n ** 2 / 2 + 1
    return n
            
n = 3
for i in range (0,10) :
    n = suite (n) % 17
print n

File: ecrit_2007.tex, line 198


def ensemble_lettre (s) :
    ens = []
    for i in range (0, len (s)) :
        c = s [i]
        if c in ens :
            ens.append (c)
    return ens
        
print lettre ("baaa")

File: ecrit_2007.tex, line 225


def compte_lettre (s) :
    nombre = {}
    for c in s :
        nombre [c] += 1
    return nombre
    
print compte_lettre ( "mysteres" )

File: ecrit_2007.tex, line 237


KeyError: 'm'

File: ecrit_2007.tex, line 261


def compteur (s) :
    nombre = {}
    for c in s : nombre [c] = 0        # ligne ajoutée
    for c in s :
        nombre [c] += 1
    return nombre

File: ecrit_2007.tex, line 273


def compteur (s) :
    nombre = {}
    for c in s : 
        if c not in nombre : nombre [c] = 0       # ligne ajoutée
        nombre [c] += 1
    return nombre

File: ecrit_2007.tex, line 285


{'e': 2, 'm': 1, 's': 2, 'r': 1, 't': 1, 'y': 1}

File: ecrit_2007.tex, line 292


def compteur (s) :
    alpha = "abcdefghijklmnopqrstuvwxyz"
    nombre = [ 0 for c in alpha ]
    for c in s :
        i = alpha.index (c)
        nombre [i] += 1
    return nombre

File: ecrit_2007.tex, line 305


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

File: ecrit_2007.tex, line 313


print compteur ( "mysteres" )
print compteur ( compteur ("mysteres") )
print compteur ( [0,1,1,4,-1, (6,0), 5.5, "ch"] )
print compteur ( { 1:1, 2:2, 1:[] } )

File: ecrit_2007.tex, line 323


print compteur ( [0, [0,0] ] )

File: ecrit_2007.tex, line 340



def autre_parcours (n) :
    i = 0
    j = 0
    k = 0
    
    while k < n :
        print (k,i,j)
        if i == 0 and j == 0 :
            k += 1
        if j == 0 and i < k :
            i += 1
        elif i == k and j < k :
            j += 1
        elif j == k and i > 0 :
            i -= 1
        elif i == 0 and j > 0 :
            j -= 1

autre_parcours (3)


File: ecrit_2007.tex, line 379


def ligne_nulle (mat) :
    nb = 0
    for i in range (0, len (mat)) :
        lig = 0
        for j in range (0, len (mat [i])) :
            if mat [i][j] > 0 : lig += 1
            if lig == 0 : nb += 1
    return nb

matri = [ [ random.randint (0,1) for i in range (0,4) ] for j in range (0,20) ]
print ligne_nulle (matri)

File: ecrit_2007.tex, line 417


def ligne_nulle (mat) :
    nb = 0
    for i in range (0, len (mat)) :
        lig = 0
        for j in range (0, len (mat [i])) :
            if mat [i][j] > 0 : lig += 1
        if lig == 0 : nb += 1                      # ligne décalée vers la gauche
    return nb

File: ecrit_2007.tex, line 441


class erreur :
    def __init__ (self) :
        self.e = erreur ()
e = erreur ()

File: ecrit_2007.tex, line 451


Traceback (most recent call last):
  File "examen2007.py", line 4, in ?
    e = erreur ()
  File "examen2007.py", line 2, in __init__
    self.e = erreur ()
  File "examen2007.py", line 2, in __init__
    self.e = erreur ()
  File "examen2007.py", line 2, in __init__
    self.e = erreur ()
  ...

File: ecrit_2007.tex, line 473


class erreur :
    def __init__ (self,e) :
        self.e = e

File: ecrit_2007.tex, line 493


def base3 (n) :
    s = ""
    while n > 0 :
        r = n % 3
        # ....... à compléter
        # ....... à compléter
    return s

File: ecrit_2007.tex, line 512


def base3 (n) :
    s = ""
    while n > 0 :
        r = n % 3
        s = str (r) + s
        n = n / 3            # équivalent à n = (n-r) / 3 
                             # puisque / est une division entière
    return s

File: ecrit_2007.tex, line 534


import copy
import math
import random

class Eleve :
    def __init__ (self, note) :
        self.note = note
        
e = Eleve (0)
l = []
for i in range (0,81) :
    e.note = int (random.gauss (15, 3) + 0.5)  # tirage aélatoire et arrondi
    if e.note >= 20 : e.note = 20              # pas de note au-dessus de 20
    if e.note < 0 : e.note = 0                 # pas de note négative
    l.append (e)
    
moy = 0
var = 0

for e in l :
    moy += e.note    
moy = float (moy) / len (l)  # les notes sont entières, 
                             # il faut convertir avant de diviser
                             # pour obtenir la moyenne
for e in l :
    var += (e.note - moy) ** 2
var = math.sqrt ( float (var) ) / len (l)

print "moyenne ", moy
print "écart-type ", var

File: ecrit_2007.tex, line 570


moyenne  16.0
écart-type  0.0

File: ecrit_2007.tex, line 616


#...
e = Eleve (0)
l = []
for i in range (0,81) :
    e.note = int (random.gauss (15, 3) + 0.5)  
    if e.note >= 20 : e.note = 20              
    if e.note < 0 : e.note = 0                 
    l.append (e.note)                            # ligne modifiée
    
moy = 0
var = 0

for note in l :                                  # ligne modifiée
    moy += note                                  # ligne modifiée
moy = float (moy) / len (l)  
for note in l :                                  # ligne modifiée
    var += (note - moy) ** 2                     # ligne modifiée
var = math.sqrt ( float (var) ) / len (l)

print "moyenne ", moy
print "écart-type ", var

File: ecrit_2007.tex, line 644


moy = 0
var = 0

for note in l :												
    moy += note												
    var += note * note
moy = float (moy) / len (l)  
var = float (var) / len (l)  
var = var - moy * moy
var = math.sqrt ( float (var) ) 

print "moyenne ", moy
print "écart-type ", var

File: ecrit_2007.tex, line 680


def puiss (x, n) :
    s = 1.0
    for i in range (0,n) :
        s *= x
    return s

def log_suite (x) :
    x    = float (x-1)
    # ......
    s    = 0
    old  = -1
    n    = 1
    while abs (old - s) > 1e-10 :
        old = s
        po  = puiss (x,n) / n
        if n % 2 == 0 : po = -po
        s  += po
        n  += 1
        # ......
    return s
    
print log_suite (2)

File: ecrit_2007.tex, line 706


# ......
# ......
# ......
# ......
# ......
# ......
def log_suite (x) :
    x    = float (x-1)
    x0   = x
    s    = 0
    old  = -1
    n    = 1
    while abs (old - s) > 1e-10 :
        old = s
        po  = x / n
        if n % 2 == 0 : po = -po
        s  += po
        n  += 1
        x  *= x0
    return s
    
print log_suite (2)

File: ecrit_2007.tex, line 742


def racine_carree (k) :
    x0 = float (k)+1
    x  = float (k)
    while abs (x-x0) > 1e-10 :
        x0 = x
        x  = (k-x*x) / (2 * x) + x
    return x

File: ecrit_2007.tex, line 768


class Noeud :
    def __init__ (self, mot) :
        self.mot = mot
        self.avant = None
        self.apres = None
    def insere (self, mot) :
        if mot < self.mot :
            if self.avant == None : self.avant = Noeud (mot)
            else : self.avant.insere (mot)
        else :
            if self.apres == None : self.apres = Noeud (mot)
            else : self.apres.insere (mot)
    def affiche (self) :
        if self.avant != None : self.avant.affiche ()
        print self.mot
        if self.apres != None : self.apres.affiche ()
            
li = ["premier","deuxième","troisième","quatrième","cinquième","sixième","centième","mystère"]
r = None
for m in li :
    if r == None : r = Noeud (m)
    else : r.insere (m)
r.affiche ()

File: ecrit_2007.tex, line 799


centième
cinquième
deuxième
mystère
premier
quatrième
sixième
troisième