Bonjour,
J'ai un examen d'informatique dans quelques jours, je m'exerce donc à résoudre des questions Python des années précédentes. Notre examen se fait sans ordinateur et il faut comprendre le code dans les moindres détails. Il faut expliquer à quoi sert le code et en donner le résultat.
Voici l'énoncé:
Expliquez brièvement le rôle du petit code Python qui suit et indiquez très précisément ce qui
sera affiché à l’écran en exécutant les quatre dernières lignes du code. L’instruction « list.append(a) » ajoute « a » à la liste « list ».
Code :
- >>> def find(li1, li2):
- lx = []
- lx2 = []
- y = z1 = z2 = xx = yy = zz2 = 0
- for a1 in li2:
- y = y+1
- z1 = 1
- for a2 in li1:
- z2 = 1
- for a3 in li2:
- if a2 == a3 and z2 == zz2 + 1:
- lx.append(z1)
- xx = xx + 1
- zz2 = z2
- z2 = z2 + 1
- if (xx == y):
- lx2.append(lx[0])
- lx = []
- xx = 0
- zz2 = 0
- z2=z2+1
- z1 = z1 + 1
- return lx2
- >>> find('gta','gt')
- >>> find('aagtaaaa','aaa')
- >>> find('gtcgtcgtc','gtc')
- >>> find('gtaaacgtcgaataac','gtc')
|
Réponses finales:
Code :
- >>> find('gta','gt')
- [1]
- >>> find('aagtaaaa','aaa')
- [1, 6]
- >>> find('gtcgtcgtc','gtc')
- [1, 4, 7]
- >>> find('gtaaacgtcgaataac','gtc')
- [1, 7, 10]
|
Je sais ce que fait le code mais je suis perdu dans les indentations, le rôle des variables,...
- Dans le cas où "xx" n'est pas égal à "y" (ligne 16), je ne sais pas à quel niveau il faut remonter dans le code (=> indentations). Et si on reprend la même lettre de "li1" et qu'on passe à la lettre suivante de "li2" ou autrement?
- Je ne sais pas non plus à quel moment on peut utiliser les compteurs "z2=z2+1" et "z1=z1 +1" (lignes 21 & 22) (=> indentations)?
- ...
Bref, je suis bien perdu dans ce code...
D'avance, merci beaucoup pour l'aide
Thibault
Message édité par td871 le 11-01-2010 à 10:21:13