TD 2 - Strings - Listes
FORCE 1
1. Création de tableau from random import * a = []
for k in range(10) : a.append(randint(-10,10)) b = []
for k in range(10):
if a[k]<=0 : b.append(a[k]) for k in range(10):
if a[k]>0 : b.append(a[k]) print(a)
print(b)
2. Evaluation de polynôme a = [7,3,4,5]
x = float(input("En quel x veux-tu évaluer P ?")) s = 0
for k in range(len(a)) : s = s + a[k] * x**k print(s)
3. Suite récurrente d'ordre 2 u = []
u.append(1) u.append(1)
for n in range(68) :
u.append ( n*u[n+1] + u[n]/(2*n+1) )
print(u[69]) # le programme affiche alors 5.463456663830753e+94 ou encore
u = [1 for k in range(70)]
for k in range(68) :
u[k+2] = ( k*u[k+1] + u[k]/(2*k+1) )
print(u[69]) # le programme affiche alors 5.463456663830753e+94
4. Fréquence d'apparition from random import * a = []
for k in range(6) : a.append(0) for k in range(600) :
d = randint(0,5) a[d] = a[d] + 1 print(a)
5. Sous-liste croissante from random import * a = []
for k in range(10) : a.append(randint(1,100)) c = 1
while c<=9 and a[c] >= a[c-1] : c=c+1 print(a)
print(c)
1
6. Récurrence forte u = []
u.append(1)
for n in range(69) :
s = 0 # on va calculer u(n+1)
for k in range(n+1):
s = s + u[k] / (n+k+2)
u.append(s) # hop, on a u(n+1)
print(u[69]) # le programme affiche alors 0.19764471643130524 7. Déplacement dans un tableau
from random import * a = [6,3,4,9,0,2,1,8,7,5]
pos = int (input ("position de départ ?")) nb = int (input ("Nb de sauts ?"))
for k in range(nb) : pos = a[pos]
print(pos)
8. Calcul de fréquences from random import * a = []
for k in range (50) : a.append(0) s = 0
c = 0
while s<50 :
de = randint(1,50) a[de-1] = 1
s = 0
for k in range(50) : s = s + a[k]
c = c + 1 print(c)
FORCE 2
9. Création d'une permutation from random import * a = []
for k in range(20) : a.append(k) for k in range(19) :
ech = randint(k,19) tmp = a[k]
a[k] = a[ech]
a[ech] = tmp print(a)
10. Plus longue séquence constante from random import * a = []
for k in range(10) : a.append(randint(1,3))
ch = 0 # longueur de la plus longue séquence for deb in range(9) :
IDX = deb +1
c = 1 # on va compter combien de fois a[deb] apparaît while (IDX < 10 and a[IDX]==a[deb]) :
c = c + 1 IDX = IDX + 1 if c > ch : ch = c print(a)
print(ch)
2
11. La moyenne des autres a = [7,13,0,1,18,16,-21]
for k in range(10) :
b = [] # nous allons créer un nouveau tableau for i in range(len(a)):
s = 0 # calculons le nouveau a[i]
for j in range(len(a)):
if i!=j : s=s+ a[j]
s = s / (len(a)-1) b.append(s)
a = b # ça y est, le nouveau tableau est prêt
print(a) # cela affiche [4.857142892581797, ... 4.85714242951299 ]
12. Fusion de tableaux ordonnés a = []
b = []
for i in range(10) :
a.append(8*i + 2*(-1)**i) b.append(7*i + 3*(-1)**i) c = []
idx_a = 0 idx_b = 0
for k in range(20) :
if idx_b==10 or a[idx_a]<=b[idx_b] : c.append(a[idx_a])
idx_a = idx_a +1 else:
c.append(b[idx_b]) idx_b = idx_b +1
print(c) # cela affiche [2, 3, 4, 6, 17, 18, 18, 22, 31, 32, 34, 38, 45, 46, 50, 54, 59, 60, 66, 70]
3
FORCE 3
13. Répétition de sous-chaîne a = input ("Ton mot ?") n = len(a)
ch = 0 # longueur championne
for i in range(n-1) :
for j in range(i+1,n) : # on cherche à partir de i+1
d = 0 # d = longueur commune à partir de i et de j
while j+d<n and a[i+d]==a[j+d] : # tant que les lettres sont égales...
d+=1 # ... d augmente
if d>ch : ch = d # si le champion est battu, on le remplace print(ch)
14. Le code secret
freq = [0 for k in range(3*3*3*3)]
for k in range(3533, 7909):
if k%7==0:
a3 = k%10
a2 = (k // 10) % 10 a1 = (k // 100) % 10 a0 = (k // 1000) % 10 x0 = a0 % 3
x1 = a1 % 3 x2 = a2 % 3 x3 = a3 % 3
code = x3 + 3*x2 + 9*x1 + 27*x0 freq[code] = freq[code] + 1 ch = 3*3*3*3
for k in range(3*3*3*3) :
if freq[k] > 0 and freq[k]<ch : code_ch = k
ch = freq[k]
x3 = code_ch % 3
x2 = (code_ch // 3) % 3 x1 = (code_ch // 9) % 3 x0 = (code_ch // 27) % 3 let = "abc"
mot = let[x0] + let[x1] + let[x2] + let[x3]
print("Le mot de passe est : ",mot)
print("Il correspond au nombre codé en base 3 : ",code_ch) print("Il est apparu ",ch," fois")
Ce programme ache :
Le mot de passe est : ccbb
Il correspond au nombre codé en base 3 : 76 Il est apparu 3 fois
4