Aller au contenu

Devoir NSI : Sujet A gpe 3

L'usage de la calculatrice n'est pas autorisé. Durée : 55min

Exercice 1: QCM

Pour chacune des 7 questions, entourer la réponse correcte (+1). Une mauvaise réponse enlève 0.5, l'absence de réponse n'enlève ni ne rapporte de points.

Question 1

On définit : T = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Laquelle des expressions suivantes a pour valeur 7 ?

Réponses :

A)  T[3][1]
B)  T[1][3]
C)  T[2][0]
D)  T[0][2]

Question 2

Quelle est la valeur de l'expression [[i, 2**i] for i in range(3)] ?

Réponses :

A)  [0,0,1,2,2,4]

B)  [0,1,1,2,2,4]

C)  [[0, 1],[1,2],[2,4]]

D)  [[0,1],[1,2],[2,4],[3,9]]

Question 3

On définit : L = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]. Quelle est la valeur de L[L[3]] ?

Réponses :

A)  3

B)  4

C)  7

D)  8

Question 4

Soient \(n\) et \(p\) deux entiers au moins égaux à 2. On définit une liste de listes t par le code suivant :

#n et p sont initialisés dans les lignes précédentes
t = [[0 for j in range(p)] for i in range(n)]
for k in range(n*p):
    t[k%n][k%p] = k

Une et une seule des affirmations suivantes est fausse. Laquelle ?

Réponses :

A)  La liste t contient des entiers k tels que 0 <= k < n * p.

B)  Pour tout j tel que 0 <= j < n - 1, t[j][0] est un multiple de p.

C)  La liste t[0] contient des entiers qui sont tous multiples de n.

D)  Pour tout j tel que 0 <= j < n - 1, t[0][j] est un multiple de p.

Question 5

Quelle est la valeur de la variable S à la fin de l'exécution du script suivant ?

res = [ [1,2,3], [4,5,6], [7,8,9] ]
S = 0
for i in range(3):
    S = S + res[i][2]

Réponses :

A)  12

B)  15

C)  18

D)  24

Question 6

image = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]

for i in range(4) :

    for j in range(4) :

        if (i+j)%2 == 0 :

            image[i][j] = 1

Réponses :

A)  [[1,0,1,0],[0,1,0,1],[1,0,1,0],[0,1,0,1]]

B)  [[1,1,1,1],[0,0,0,0],[1,1,1,1],[0,0,0,0]]

C)  [[0,1,0,1],[1,0,1,0],[0,1,0,1],[1,0,1,0]]

D)  [[0,0,0,0],[1,1,1,1],[0,0,0,0],[1,1,1,1]]

Question 7

On définit la variable suivante : citation = 'Les nombres gouvernent le monde'.

Quelle est la valeur de l'expression citation[5:10] ?

Réponses :

A)  ombre

B)  ombres

C)  nombre

D)  nombres

Exercice 2:

Avant de décoller, l'équipage du vaisseau Nigolorp doit prévoir la quantité de carburant à charger afin de tenir tout le voyage. Le capitaine estime qu'il faut prévoir 60kg de carburant par personne.

Cependant, comme certains membres du vaisseau sont plus ou moins enrobés, il s'inquiète et décide de rajouter 20kg de carburant supplémentaire pour chaque personne pesant strictement plus de 90kg.

Le but de l'équipage du Nigolorp est d'écrire un programme capable de calculer la quantité de carburant à emporter en fonction des poids des différents membres de l'équipage et l'afficher.

Écrire une fonction carbu qui, à partir de la liste des poids de chaque membre de l'équipage, retourne la quantité de carburant à emporter en kg.

Exemple:

>>>carbu([67,121,88])
>>>200
Correction
def carbu(list):
  carb = 0
  for i in range(len(list)):
      if list[i] > 90:
          carb += 80
      else:
          carb += 60
  return carb

#carbu2 pour montrer que cela est possible en une seule ligne !
def carbu2(L):
  return sum([60 if elt<90 else 80 for elt in L])

Exercice 3:

Dans cet exercice, il vous est demandé d'écrire une fonction syracuse(x,k) d'afficher la liste des k premiers termes d'une suite de Syracuse.

À partir d'un nombre entier x strictement positif, on obtient une suite de Syracuse comme suit :

on part de x comme terme d'indice zéro ; ensuite, un terme est obtenu à partir du précédent :

  • soit en divisant par 2, s'il était pair ;

  • soit en multipliant par 3 puis en ajoutant 1, s'il était impair.

Exemple:

>>>syracuse(2,4)
>>>[2,1,4,2]
Correction
def syracuse(x,k):
  L=[x]
  for i in range(k-1):
      if L[-1]%2==0:
          L.append(L[-1]//2)
      else:
          L.append(L[-1]*3+1)
  return L

Exercice 4:

Une séquence d'ADN sera une liste constituée de lettres dans l'ensemble {A, T, G, C}. On cherche à analyser les fréquences d'apparition des sous-séquences d'une séquence d'ADN de longueur donnée en entrée.

Écrivez une fonction nbadn(n,L) qui retourne la sous-séquence de longueur n la plus fréquente dans la chaîne d'ADN L . Dans le cas où plusieurs sous-séquences de longueur apparaissent un même nombre de fois, affichez celle qui vient en premier dans l'ordre alphabétique.

Exemple:

>>>nbadn(2,[T,C,G,T,A,C,G,T,A,G])
>>>[C,G]