Initiation à la programmation ENSAE 1A

interro_rapide_45_minutes_2013_12.tex

triangle de Pascal


pascal = { }
for i in range(1,100) :                                   # A
    pascal[i,0] = 1                                       
    pascal[i,i] = 1                                       # B
    for j in range(0,i) :                                 # C
        pascal [i,j] = pascal [i-1,j-1] + pascal[i-1,j]  (ligne 10 mentionnée dans l'erreur)
print (pascal[5,4])				

File: interro_rapide_45_minutes_2013_12.tex, line 43


Traceback (most recent call last):
  File "interro_rapide_45_minutes_2013_12_1.py", line 10, in <module>
    pascal [i,j] = pascal [i-1,j-1] + pascal[i-1,j]
KeyError: (0, -1)

calcul de la somme des chiffres d'un entier positif (1)


def somme_chiffre (i) :
    return sum ( [ int(c) for c in str(i) ] )

print (somme_chiffre(199))

calcul de la somme des chiffres d'un entier positif (2)


def somme_chiffre (i) :
    s = 0
    while i > 0 :
        s += i % 10
        i //= 10
    return s

divisible par 11


def division_11 (i) :    
    spair = 0
    simpair = 0
    pos = 1  # la première position est 1
    while i > 0 :
        if pos % 2 == 0 : spair += i % 10
        else : simpair += i % 10
        i //= 10
        pos += 1
    
    diff = abs(spair - simpair)
    
    if diff == 0 : return True 
    elif diff < 11 : return False
    elif diff == 11 : return True
    else : return division_11(diff)

for i in [7,11,55,100,121,1001,3003,4000] :
    print (i,division_11(i))

suite de Fibonacci


n = 100
fibo = [ 0 ] * (n+1)                    # A
fibo[0] = 1 
for i in range(2,n) :                   # B
    fibo[i] = fibo[i-1] + fibo[i-2]     # C
print (fibo[n])  #affiche zéro          

diviseurs d'un nombre entier


def diviseur (i) :
    div = [ ]
    for d in range (1, i//2+1) :
        if i % d == 0 : div.append(d)
    return div
    
print (diviseur (11))
print (diviseur (512))

nombre parfait


def nombre_parfait (i) :
    div = diviseur(i)
    return sum(div) == 2*i

for i in range(115,125) :
    print (i, nombre_parfait(i), diviseur(i))