QCM qui était à préparer

Thème A : types de base

Parmi les noms suivants, lequel n’est pas celui d’une méthode d’encodage des caractères ?
Arial
This is the correct answer 🙂
Il s’agit d’une police de caractères, pas d’une méthode d’encodage.
UTF-16
C’est une méthode d’encodage de caractères que nous n’avons pas étudiée où chaque caractère est codé sur une suite de un ou deux mots de 16 bits.
ASCII
La méthode d’encodage de caractères sur laquelle sont basées les autres. Les nouvelles normes comme l’Unicode ou UTF-8 son rétro-compatibles avec l’ASCII.
Unicode
C’est la méthode d’encodage de caractères qui s’est imposée.
Quel est le plus grand entier positif (non signé) représentable en binaire sur 2 octets (c’est-à-dire 16 bits) ?
Le plus grand est
This is the correct answer 🙂
Le bit de poids fort vaut alors , le bit de poids faibles et avec des « 1 » partout, on a . Attention l’énoncé dit « non signé » donc pas de négatifs !
Le plus grand est
C’est le piège dans lequel je suis moi-même tombé : ce serait la bonne réponse pour des entiers signés donc avec des négatifs : de à
Le plus grand est
On sort des 16 bits
Le plus grand est
Quel est le nombre minimum de bits qui permet de représenter les 7 couleurs de l’arc-en-ciel ?
Il faut au moins 3 bits.
This is the correct answer 🙂
Oui avec trois bits, on peut coder :
000 -> 0
001 -> 1
010 -> 2
011 -> 3
100 -> 4
101 -> 5
110 -> 6
111 -> 7
Il faut au moins 2 bits.
Trop peu : avec deux bits, 4 possibilités de zéro à trois.
Il faut au moins 4 bits.
C’est trop !
Il faut au moins 5 bits.
C’est trop !
Quelle est l’écriture en hexadécimal (base 16) du nombre entier positif qui s’écrit 1110 1101 en base 2 ?
ED
This is the correct answer 🙂
1110 donne 14 donc E
1101 donne 13 donc D
DE
Il faudrait 1101 1110 dans cet ordre !
EDF
Il faudrait 1110 1101 1111
FEFD
Non… il faudrait 1111 1110 1111 1101…

Thème B : types construits

Quelle est la valeur de l’expression
[ 2*k + 1 for k in range(4) ]
[1, 3, 5, 7]
This is the correct answer 🙂
C’est une liste en compréhension avec k allant de 0 à 3, donc 2*k allant de 0 à 6 de deux en deux… et on ajoute 1 donc 1, 3, 5, 7
[0, 1, 2, 3]
Non, ce serait par exemple
[ k for k in range(4) ]
[3, 5, 7, 9]
Non, ce serait par exemple
[ 2 * k + 3 for k in range(4) ]
[1, 2, 3, 4]
Non, ce serait par exemple
[ k + 1 for k in range(4) ]
De quelle expression la liste suivante est-elle la valeur ?
[[0,0,0,0], [1,1,1,1], [2,2,2,2]]
[[i] * 4 for i in range(3)]
This is the correct answer 🙂
En effet [0] * 4 donne la liste [0, 0, 0, 0] par exemple… et on s’arrête à 2 puisque c’est range(3).
[[i] * 4 for i in range(4)]
Donnerait
[[0,0,0,0], [1,1,1,1], [2,2,2,2], [3,3,3,3]]
[[i] * 3 for i in range(4)]
Donnerait
[[0,0,0], [1,1,1], [2,2,2], [3,3,3]]
[[i] * 3 for i in range(3)]
Donnerait
[[0,0,0], [1,1,1], [2,2,2]]
On exécute le script suivant :
inventaire = {'pommes': 430, 'bananes': 312,
                    'oranges' : 274, 'poires' : 137}
stock = 0
for fruit in inventaire.keys():
    if fruit != 'bananes':
        stock = stock + inventaire[fruit]
Que contient la variable stock à la fin de cette exécution ?
Elle contient 841.
This is the correct answer 🙂
En effet inventaire est un dictionnaire que l’on parcourt avec ses clés et stock une variable initialisée à zéro. On lui ajoute la valeur correspondant à chaque clé « fruit » qui n’est pas ‘bananes’.
Elle contient 312.
Non, car c’est différent « != » de ‘bananes’.
Elle contient {430, 274, 137}.
Ce sont bien les nombres qu’on ajoute mais cette expression n’a pas de sens en python. On ajoute dans un entier ici.
Elle contient {‘pommes’, ‘oranges’, ‘poires’}.
Non, on ajoute les valeurs. Cette juxtaposition de « clés » n’a pas de sens en python.
On considère le code suivant :
t = [0, 3, 5, 7, 9]
t[9] = 3 + t[5]
Que vaut t à la fin de son exécution ?
L’exécution déclenche une erreur
This is the correct answer 🙂
On veut accéder à t[5] (ou après t[9]) et t contient cinq valeurs indexées de 0 à 4.
t vaut
[0, 3, 5, 7, 9]
t vaut
[0, 3, 5, 7, 9, 3]
t vaut
[0, 3, 5, 7, 9, 8]
On définit la variable suivante :
citation = "Les nombres gouvernent le monde".
Quelle est la valeur de l’expression citation[5:10] ?
citation[5:10] vaut « ombre »
This is the correct answer 🙂
Les lettres de 5 à 10 exclus, donc de la sixième à la dixième.
citation[5:10] vaut « ombres »
Non, citation[5:11] vaut « ombres ».
citation[5:10] vaut « nombre »
Non, citation[4:10] vaut « nombre ».
citation[5:10] vaut « nombres »
Non, citation[4:11] vaut « nombres ».

Thème C : traitement de données en tables

Qu’est-ce qu’un fichier CSV ?
Un format de données
This is the correct answer 🙂
« CSV : Comma Separated Values » : des données séparées par des virgules, par exemple.
une librairie Python permettant l’affichage des images
Non, PIL ou pillow est une libraireie de travail sur les images en python
un format d’image
N’importe quoi : JPG, PNG en sont par contre.
Un utilitaire de traitement d’image
Non, ça c’est Paint, Photofiltre, le GIMP…
Laquelle de ces affirmations est vraie ?
on peut ouvrir un fichier CSV à l’aide d’un tableur
This is the correct answer 🙂
Oui, les valeurs séparées par des virgules seront alors case par case, et ce pour chaque ligne en gros…
un fichier CSV permet de gérer l’apparence du code dans l’éditeur
N’importe quoi 😉
un fichier CSV permet de gérer l’apparence d’une page HTML
Un fichier CSS fait ça, pas un CSV
un fichier CSV contient un programme à compiler
Non, un fichier C peut-être…
On exécute le script suivant :
notes = {"Paul": 12, "Jean": 16, "Clara": 14, "Aïssa": 18}
t = list(notes.keys())
Quelle est la valeur de t à la fin de cette exécution ?
C’est
["Paul", '"Jean", "Clara", "'Aïssa']
This is the correct answer 🙂
Oui, on transfrome en liste avec list les clés du dictionnaire notes.
C’est
Paul
Non, il en manque et c’est dans une liste.
C’est
[12, 16, 14, 18]
Non, ça c’est si on convertit en liste les valeurs notes.values()
C’est
[ "Paul": 12, "Jean": 16, "Clara": 14, "Aïssa": 18 ]
Non ça c’est n’importe quoi.
On a défini deux tables de données :
data1 = [(‘Bruce’, ’Wayne’), (‘Chuck’, ‘Norris’), (‘Bruce’, ‘Lee’), (‘Clark’, ‘Kent’)]
data2 = [(‘Diana’, ’Prince’), (‘Chuck’, ‘Norris’), (‘Peter’, ‘Parker’)]
Quelle instruction permet de construire une table data regroupant l’ensemble des informations de data1 et data2 ?
C’est
data = data1 + data2
This is the correct answer 🙂
Cette question m’a aussi « embrouillé ».
On a bien l’ensemble des informations, même si, grosse vanne… on a deux fois (‘Chuck’, ‘Norris’)
C’est
data == data1 + data2
Non, ça c’est un booléen qui vaut False car on teste si c’est égal.
C’est
data = [element for element in data1 or data2]
Gros piège ! Celle-ci empêcherait-elle les doublons ? Presque… Mais elle plante : le « or » n’a pas de sens.
C’est
data = [data1] + [data2]
Non, puisque data1 et data2 sont déjà des listes.
Qu’est-ce que le format de fichier CSV ?
un format de fichier où les données sont séparées par un caractère tel qu’une virgule
un format de fichier pour décrire une base de données
Non, on en reparlera 😉
un format de fichier mis au point par Microsoft pour Excel
Non, c’est par exemple XLS
un format de fichier décrivant une page Web
Non, pour les pages web, on utilise de fichiers HTML ou CSS
On a extrait les deux premières lignes de différents fichiers.
Déterminer celui qui est un authentique fichier CSV :
Nom,Pays,Temps
Camille Muffat,France,241.45
This is the correct answer 🙂
Trois valeurs séparées par des virgules et la première ligne contient le nom des « champs ».
Nom Pays Temps
Camille Muffat France 241.45
Manquent les virgules ou les points-virgules !
{ « Nom »: « Camille Muffat », « Pays »: « France », « Temps »: 241.45}
Ici un dictionnaire avec des clés.
{ Nom: « Camille Muffat », Pays: « France », Temps: 241.45}
N’importe quoi

Thème F : langages et programmation

étant un entier strictement positif, la fonction suivante calcule sa factorielle, c’est-à-dire le produit
Comment faut-il écrire la ligne en pointillée ci-dessous pour ce faire ?
def factorielle(n):
    f = 1
    .........
        f = f * i
    return f
Il faut écrire dans les pointillés
for i in range(1, n+1):
This is the correct answer 🙂
On multiplie bien f par tous les entiers de 1 à n. ON peut même faire mieux avec
for i in range(2, n+1):
Il faut écrire dans les pointillés
for i in range(1, n):
On n’aura pas multiplié par , le range s’arrêterait juste avant
Il faut écrire dans les pointillés
for i in range(0, n):
Là on va multiplier par zéro et le résultat fera zéro.
Il faut écrire dans les pointillés
for i in range(n+1):
Là on va multiplier par zéro et le résultat fera zéro.
On exécute le script suivant :
a = 4
b = 4
c = 4
while a < 5:
    a = a - 1
    b = b + 1
    c = c * b
Que peut-on dire ?
ce programme ne termine pas
This is the correct answer 🙂
En effet la terminaison est assurée quand a dépasse ou atteint 5, mais a est initialisé à 4 et décroît. On « boucle » indéfiniment.
à la fin de l’exécution, la variable a vaut 5
Non 4, 3, 2, 1, 0, -1 … et pas de fin !
à la fin de l’exécution, la variable b vaut 34
à la fin de l’exécution, la variable c vaut 42
Non, même si on kiffe le 42 😉
On souhaite écrire une fonction qui renvoie le maximum d’une liste d’entiers :
def maximum(L):
    m = L[0]
    for i in range(1,len(L)):
        if .........:
            m = L[i]
    return m
Par quoi faut-il remplacer les pointillés pour que cette fonction produise bien le résultat attendu ?
Par L[i] > m
This is the correct answer 🙂
Si ce test est réalisé, on doit changer le maximum m.
Par L[i] > L[i-1]
Non, rien à voir avec l’indice avant.
Par L[i] > L[i+1]
Non, rien à voir avec l’indice après. En plus ça plante à la fin.
Par i > m
Non, ici i est l’indice et c’est la valeur L[i] qui nous intéresse.
Quel est le seul langage de programmation parmi les propositions suivantes ?
C++
This is the correct answer 🙂
Oui, même si on ne l’a pas étudié !
CSS
Langage de style de pages web.
HTML
Langage de contenu de pages web.
WEB
Pas un langage à ma connaissance.
La fonction suivante calcule la racine carrée du double d’un nombre flottant.
from math import sqrt

def racine_du_double(x):
    return sqrt(2*x)
Quelle est la précondition sur l’argument de cette fonction ?
C’est x >= 0.
This is the correct answer 🙂
Il faut un positif (ou nul) pour une racine carrée.
C’est x < 0
Non, le contraire.
C’est 2 * x > 0.
On peut aussi avoir x == 0 qui ne serait pas accepté.
C’est sqrt(x) >= 0
Non, la condition est sur x et pas sur la racine de x.
La fonction maxi ci-dessous a pour but de renvoyer la valeur maximale présente dans la liste qui lui est passée en argument.
def maxi(L):
    dernier_indice = len(L) - 1
    valeur_max = L[0]
    for i in range(1,dernier_indice):
        if L[i] > valeur_max:
            valeur_max = L[i]
    return valeur_max
Cette fonction a été mal programmée. On souhaite réaliser un test pour le démontrer.
Parmi les propositions suivantes, laquelle mettra la fonction maxi en défaut ?
C’est
maxi([1, 2, 3, 4])
This is the correct answer 🙂
En effet le maximum est au dernier indice et on ne teste pas cette valeur avec le range là-haut
C’est
maxi([4, 3, 2, 1])
On aura l’impression que c’est correct car le maximum n’est pas au dernier indice.
C’est
maxi([1, 3, 3, 2])
On aura l’impression que c’est correct car le maximum n’est pas au dernier indice.
C’est
maxi([1, 1, 1, 1])
On aura l’impression que c’est correct car le maximum n’est pas forcément au dernier indice, on le rencontre avant.

Thème G : algorithmique

Quelle est la valeur de c à la fin de l’exécution du code suivant :
L = [1,2,3,4,1,2,3,4,0,2]
c = 0
for k in L:
    if k == L[1]:
        c = c+1
3
This is the correct answer 🙂
C’est le nombre de fois où l’on rencontre 2 en parcourant la liste puisque L[1] vaut 2.
0
2
10
Que renvoie la fonction suivante quand on l’appelle avec un nombre entier et une liste d’entiers ?
def mystere(n,L):
    for x in L:
        if n == x:
            return True
    return False
une valeur booléenne indiquant si le nombre n est présent au moins une fois dans la liste L
une valeur booléenne indiquant si le nombre n est présent plusieurs fois dans la liste L
une valeur booléenne indiquant si le nombre n est le plus grand de la liste L
une valeur booléenne indiquant si le nombre n est le plus petit de la liste L
La fonction mystere suivante prend en argument un tableau d’entiers.
def mystere(t):
    for i in range(len(t) - 1):
        if t[i] + 1 != t[i+1]:
            return False
    return True
si le tableau passé en argument est une suite d’entiers consécutifs
si le tableau passé en argument est trié en ordre croissant
si le tableau passé en argument est trié en ordre décroissant
si le tableau passé en argument contient des entiers tous identiques
On exécute le script suivant :
liste=[48, 17, 25 , 9, 34, 12, -5, 89, 54, 12, 78, 8, 155, -85]

def recherche(liste):
    valeur_1 = valeur_2 = liste[0]
    for item in liste:
        if item < valeur_1:
            valeur_1 = item
        elif item > valeur_2:
            valeur_2 = item
        else:
            pass
    return (valeur_1, valeur_2)
Que va renvoyer l’appel
recherche(liste) ?
C’est (-85, 155).
This is the correct answer 🙂
C’est un couple composé du minimum et du maximum.
C’est (155, -85).
C’est [-85, 155].
C’est [155, -85].
Un algorithme de recherche dichotomique dans une liste triée de taille nécessite, dans le pire des cas, exactement comparaisons.
Combien cet algorithme va-t-il utiliser, dans le pire des cas, de comparaisons sur une liste de taille ?
comparaisons au pire des cas.
This is the correct answer 🙂
Ben oui, après un coup, on se retrouve avec une moitié de éléments et donc au pire encore comparaisons, donc au pire en tout.
comparaisons au pire des cas.
comparaisons au pire des cas.
comparaisons au pire des cas.
On considère la fonction suivante :
def f(x,L):
    i = 0
    j = len(L)-1
    while i<j:
        k = (i+j)//2
            if x <= L[k]:
                j = k
            else:
                i = k + 1
    return i
Cette fonction implémente :
la recherche dichotomique
This is the correct answer 🙂
Oui, à une petite différence de celui vu en cours :
ici i est la variable de gauche,
j celle de droite,
k le milieu,
si le nombre est à gauche, j devient k (contre k-1 dans notre cours),
si le nombre est à droite, i devient k + 1 (comme dans notre cours). Par ailleurs, ce code renvoit toujours un indice du tableau, donc on présuppose certainement que la valeur est dans le tableau !
le tri par insertion
le tri par sélection
la recherche du plus proche voisin

Une réflexion au sujet de « QCM qui était à préparer »

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.