Étiquette : NSI

Tutoriels

Comment exécuter un script python

Que vous soyez en spécialité NSI, un lycéen français ou simplement un curieux désireux de tester un script python, voici quelques solutions simples pour exécuter un script python.

Voici un code python très simple. Quel est le résultat produit par l’exécution de ce code ?

''' python3 Hello World ! '''
message = [72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33] 
for nb in message:
    print(chr(nb), end="")
print("\n"+" " * 42, ord("*"))
#spé nsi

Thonny, un IDE simple à utiliser.

Sur Windows, Mac ou Linux il existe un IDE très simple et facile à utiliser. On le télécharge depuis le site officiel thonny.org, on peut l’installer sur un compte utilisateur sur Windows et on peut le personnaliser avec des thèmes pour obtenir une coloration syntaxique à son goût.

Thonny avec le thème Clean Dark Blue et la coloration syntaxique Dracula.

Il suffit de copier / coller le script dans l’éditeur de script, de l’enregistrer, puis de cliquer sur le bouton d’exécution du script (ou sur son raccourci clavier [F5]) pour obtenir le résultat de l’exécution dans la console.

On peut bien évidemment utiliser la console pour tester rapidement du code python ou interroger le contenu des variables.

Thonny est un logiciel libre, gratuit, sous licence MIT.

Basthon, un IDE en ligne respectueux de votre vie privée

Basthon est l’acronyme de « Bac À Sable pour pyTHON« . Il s’agit un IDE en ligne, accessible sans aucune installation préalable, donc utilisable si vous disposez d’un navigateur internet. Vous pouvez l’utiliser en ligne, en étant connecté à internet ou simplement en téléchargeant et décompressant une archive zip.

Basthon est :

Tester le mode console de Basthon

Depuis le site officiel ou depuis notre site. Seul le premier lien vous garanti de disposer de la dernier version de Basthon.

DS

Banque des sujets de spécialité NSI

Les épreuves communes de spécialités NSI, qu’il s’agisse des épreuves écrites et des épreuves pratiques sont publiées sous une licence libre. Vous pouvez donc librement les télécharger pour vous entrainer et préparer au mieux ses examens.

Le site officiel quandjepasselebac

Vous pouvez trouver les sujets de NSI sur le site officiel du gouvernement :
http://quandjepasselebac.education.fr/revisions-la-banque-nationale-de-sujets/

En date du 26 avril 2021, ce site refuse une connexion HTPPS et il n’est pas possible de faire une lien direct stable vers les sujets d’une matière en particulier, aussi vous devrez trouver les sujets par vous même :

Bac général > Sujet de première > Enseignements de spécialité > …
Bac général > Sujet de terminale > Enseignements de spécialité > …

Le site officiel Eduscol

Vous y trouverez la banque des sujets des épreuves pratiques de spécialité NSI (Numérique et Sciences Informatiques) de la session 2021.

https://eduscol.education.fr/2661/banque-des-epreuves-pratiques-de-specialite-nsi

Le site ccbac.fr

CCBac.fr est le site gratuit de référence sur les épreuves de Contrôle Continu E3C du Baccalauréat, il n’est pas affilié à l’Éducation Nationale. Il a l’avantage de proposer des adresses web stables et un bouton pour télécharger rapidement tous les sujets pour l’année 2021.

ClasseExamenannéeLien
1èreEC22020https://ccbac.fr/list.php?session=2&voie=1&mat=26&opt=0&an=2020
1èreEC22021https://ccbac.fr/list.php?session=2&voie=1&mat=26&opt=0&an=2021

Ce site ne contient par contre pas les épreuves pratiques de spé NSI ni les épreuves de bac. Le sujet 0 de l’épreuve de baccalauréat de spé NSI est ci-dessous au format PDF.

Et les corrigés ?

Des élèves ont rédigé sur ce site le corrigé de l’épreuve 42 des E3C de l’année 2020 : Correction du sujet n°42 de la BNS des E3C de NSI, pour le reste il va falloir faire chauffer votre moteur de recherche favoris, quel qu’il soit.

DS

Correction du sujet n°42 de la BNS des E3C…

Dans le cadre de l’évaluation en contrôle continu, les élèves étudiant la spécialité NSI passent des épreuves de de contrôle continu lors du troisième trimestre de leur année de première. Annulée en 2020, les E3C ont été renommées EC en 2021 et également annulées.

Les sujets des années précédentes sont publics

Parmi ces 51 sujets de 42 questions, nous vous proposons la correction du sujet n°42. Cette correction a été entièrement préparé et rédigé sur ce site web par nos élèves de la spécialité NSI du lycée Louis Pasteur.
Les sujets sont sous licence CC BY-NC-SA 3.0 FR, le présent corrigé est sous la même licence.
Chaque sujet comporte donc 42 questions. (Pourquoi 42 ? Il faut faire spé NSI pour comprendre )

Modalités pratiques

L’épreuve consiste en 42 questions, rangées en 7 thèmes. Le candidat :

  • gagne 3 points s’il choisit la bonne réponse, 
  • perd 1 point s’il choisit une réponse fausse,
  • ne gagne ni ne perd aucun point s’il ne répond pas ou choisit plusieurs réponses.

Le total sur chacun des 7 thèmes est ramené à 0 s’il est négatif.

La note finale s’obtient en divisant le total des points par 6,3 et en arrondissant à l’entier supérieur.

Thème A : types de base

Question A.1

Olivier visite son site préféré pour relire le programme de NSI.
Il devrait lire le texte ci-dessous :

L’enseignement de spécialité de numérique et sciences informatiques du cycle terminal de la voieRetour ligne automatique
générale vise l’appropriation des fondements de l’informatique pour préparer les élèves à uneRetour ligne automatique
poursuite d’études dans l’enseignement supérieur, en les formant à la pratique d’une démarcheRetour ligne automatique
scientifique et en développant leur appétence pour des activités de recherche.

Le paramétrage de son navigateur lui donne l’affichage ci-dessous :

L’enseignement de spécialité de numérique et sciences informatiques du cycle terminalRetour ligne automatique
de la voie générale vise l’appropriation des fondements de l’informatique pourRetour ligne automatique
préparer les élèves à une poursuite d’études dans l’enseignement supérieur, enRetour ligne automatique
les formant à la pratique d’une démarche scientifique et en développant leur appétenceRetour ligne automatique
pour des activités de recherche.

Quel type d’encodage Olivier doit-il choisir dans les paramètres de son navigateur pour afficher correctement le texte ?

Réponses

A ANSI
B LATIN-1
C UTF-8
D ASCII

Correction : Réponse C

L’auteur de cette question travaillait peut-être à l’Agence Nationale de la Sécurité des Systèmes d’Information (ANSI), il surement du au préalable étudier le codage ASCII qui date de 1963 et ne concerne donc pas le codage des caractères d’une page web. Seul les standards ISO 8859-1 (autre nom de LATIN-1) ou UTF-8 sont utilisés sur le web. C’est désormais en UTF-8 que sont désormais codés les pages web.

Question A.2

Quel est le nombre maximal de bits du produit de deux entiers positifs codés sur 8 bits ?

Réponses

A 8
B 16
C 32
D 64

Correction : Réponse B

Sachant que sur le maximum codé peut être de 8, 8 x 8 = 64. Ingenious ?
Sur 8 bits, le plus grand entier en base 10 est 2^8-1 = 255.
255 x 255 = 65 025‬
Sur 16 bits, le plus grand entier en base 10 est 2^16-1 = 65 535
Ainsi, 16 bits suffiront.

Question A.3

À quelle affectation sont équivalentes les instructions suivantes, où a, b sont des variables entières et c une
variable booléenne ?

c = False
if a==b:
c = True
if a > b+10:
c = True

Réponses

c = (a==b) or (a > b+10)
c = (a==b) and (a > b+10)
c = not(a==b)
c = not(a > b+10)

Correction : Réponse A

Car si a est égal à b, alors le booléen c devient True et si a est supérieur à b+10, le booléen c devient également True. Or ces deux conditions ne sont pas dépendent l’une de l’autre, de plus la porte or est true si les deux condition sont vrai mais si l’une des deux devient fausse, le booléen aussi.

Question A.4

Quelle est la représentation binaire de l’entier 152 ?

Réponses

A 0001 1001
B 0011 1010
C 0100 0100
D 1001 1000

Correction : Réponse D

Le premier 1 vaut 128, vous enlevez donc 128 à 152, il vous reste donc 24, ensuite il y a 64 et 32 qui sont 0, ensuit un 1 qui vaut 16, 24 – 16 = 8. Pile la valeur du 3ème 1 : magique non ?

Question A.5

Soient P et Q deux formules logiques telles que P est vraie et Q est fausse. Quelle est la valeur de l’expression (P ET Q) OU (NON(P) OU Q) ?

Réponses

A vraie
B fausse
C ni vraie, ni fausse
D vraie et fausse en même temps

Correction : Réponse B

Ici et P est donc True et Q est False, or la premiere porte ET prend le « plus fort », donc False car si l’un des deux est False l’ensemble aussi, pour la troisième porte qui est OU, elle prend le False comme plus fort et comme NON(P) est False, alors l’ensemble aussi. La deuxième porte qui est OU on refait le même raisonnement. CQFD.

Question A.6

On rappelle que le nombre entier 12 s’écrit 1100 en base 2. Quelle est le codage en complément à 2 sur un octet du nombre entier −12 ?

Réponses

A -0000 1100
B 1000 1100
C 1111 0100
D 1111 0011

Correction : Réponse C

Ici nous pouvons déjà supprimer A car l’ordinateur ne comprend pas les -… Pour un nombre négatif, nous devons placer un 1 en première positions (à gauche pour les lecteurs de manga), nous pouvons également supprimer D car le dernier 1 signifie que c’est un nombre impaire. Il nous reste B et C 
Il est d’ailleurs conseillé par vos professeurs de NSI d’apprendre par coeur les entiers compris entre [-127 ; 127] en binaire pour l’examen de fin d’année.
Si vous ne les avez pas appris, il suffit d’appliquer la méthode : 
0000 1100 = 12
1111 0011 On inverse les bits
1111 0100 Plus 1 !

Thème B : types construits

Question B.1

On considère le code suivant :
D = ["a" : "1", "2" : "a", "b" : "a", "c" : "3"]
Que vaut D["a"] à la fin de l’exécution ?

Réponses

"1"
2
["2", "b"]
["1", "3"]

Correction : Réponse A

ici nous faisons une recherche dans le tableau grâce à la clé « a » qui est associé à « 1 ».

Question B.2
Quelle expression Python a pour valeur la liste [1,3,5,7,9,11] ?
Réponses
 
[2*i - 1 for i in range(6)]
[2*i + 1 for i in range(6)]
[2*i + 1 for i in range(5)]
[2*i - 1 for i in range(7)]
 
Correction : Réponse B
 
Question sérieuse ! On génère un tableau contenant 6 valeurs, données par 2*i + 1 avec i un entier entre 0 et 5 ! Oui oui, entre 0 et 5 il y a 6 valeurs.

Question B.3
 
On exécute l’instruction suivante :

T = [ [12,13,14,15], [24,25,26,27],[35,36,49,33], [61,53,55,58] ]

Quelle expression parmi les quatre suivantes a pour valeur 26 ?
 
Réponses
 
T[1][2]
T[2][1]
T[2][3]
T[3][2]
 
Correction : Réponse A
 
En premier temps nous cherchons la valeur 26 dans le tableau. Une fois trouvé, nous constatons qu’il se trouve dans le deuxième « sous tableau », et qu’il est en troisième position, comme la Croatie en 98… Or les tableau indexés commencent par le valeur 0, donc deuxième position devient la première et la troisième position devient 2ème, comme cette fois ci en 2018 pour nos Kockasti… la réponse est donc T[1][2].

Question B.4
 
Quelle expression permet d’accéder à la valeur 'hello' après qu’on a défini L = [['a','b','c'],['bonjour','hello']]
 
Réponses
 
L[5]
L[1][1]
L[2][2]
L['hello']
 
Correction : Réponse B
 
Idem question précédente, le « hello » – à prononcer absolument avec l’accent British sinon vous ne progresserez jamais en NSI – se trouve dans le deuxième tableau en deuxième position, sachant qu’il est indexé à partir de 0, l’expression pour retrouver « hello » est L[1][1].

Question B.5

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 ?

Réponses

{430, 274, 137}
312
841
{ 'pommes', 'oranges', 'poires' }

Correction : Réponse C

Dans le dictionnaire inventaire, le script va récupérer les valeurs, c’est a dire les éléments attitrés aux clés (soit ici 430, 312, 274 et 137). Il va ensuite les « analyser » une par une grâce à la boucle for. Si l’élément pris est différent (par l’opérateur != ) est différent de banane, il est stocké dans stock. Donc, dans les élément pris seul 312 n’et pas compté, en effet il correspond a la valeur banane (la légende dis que l’éducation nationale nous transmet grâce a ce script la véritable longueur de la coupe de cheveux du fameux Elvis Presley). On a donc, dans stock, l’addition de 430 + 274 + 137 = 42 (non je déconne ça fait bien 841 même si 42 est la réponse a tout).

Question B.6

On définit : T = [7*n for n in range(10)].
Quelle est la valeur de l’expression T[7] ?

Réponses

A 42
B 49
C 56
D 70

Correction : Réponse B

T va faire une simple multiplication (7*n) de n=0 à n=9 (for n inrange(10)). Donc quand T = T[7], n = 7 donc on a 7 * 7 = 49, soit le numéro du magnifique département de la Maine-et-Loire. Donc on était a 2 doigt d’avoir 42….Les créateur de ce QCM sont vraiment des tortionnaires !

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

Question C.1

On définit :

contacts = { 'Toto': 'toto@nsi.fr', 'Chloé': 'chloe@nsi.com',
'Paul': 'paul@nsi.net', 'Clémence': 'clemence@nsi.org' }

Parmi les propositions suivantes, laquelle est exacte ?

Réponses

A ’Chloé’ est une valeur de la variable contacts
B ’Chloé’ est une clé de la variable contacts
C ’Chloé’ est un attribut de la variable contacts
D ’Chloé’ est un champ de la variable contacts

Correction : Réponse B

Ici, il faut procéder par élimination. Comme le dirait un grand sage : « Ce soir, il n’en restera qu’un ! ». Donc je pense que nous sommes d’accord pour dire que ’Chloé’ n’est ni un champs (j’ai vu auprès d’agriculteurs pro et aucun ne donne de nom a ses champs, sauf une fois au chalet) ni un attribut. En effet ces 2 éléments ne peuvent pas se retrouver dans le dictionnaire contacts. La variable contacts possède donc des clés et des valeurs, comme tout les dictionnaire. Ça tombe bien, c’est les 2 réponses qu’il reste ! Or on voit ici que ’Chloé’ est bien une clé de la variable contacts, et par conséquent, si c’est un clé, ce n’est pas un valeur. Tout est bien qui finit bien. La réponse B a gagné Koh-Lanta.

Question C.2

Qu’est-ce que le format de fichier CSV ?

Réponses

A un format de fichier mis au point par Microsoft pour Excel
B un format de fichier pour décrire une base de données
C un format de fichier où les données sont séparées par un caractère tel qu’une virgule
D un format de fichier décrivant une page Web

Correction : Réponse C

Un fichier CSV signifie Comma-Separated Values (les bilingues ont déjà la réponse). Il est de type tableur et ses valeurs (pour ceux qui ne l’aurai pas deviné) sont séparés par une virgule.

Question C.3

On définit ainsi une liste t :

t = [ {'id':1, 'age':23, 'sejour':'PEKIN'},
 {'id':2, 'age':27, 'sejour':'ISTANBUL'},
 {'id':3, 'age':53, 'sejour':'LONDRES'},
 {'id':4, 'age':41, 'sejour':'ISTANBUL'},
 {'id':5, 'age':62, 'sejour':'RIO'},
 {'id':6, 'age':28, 'sejour':'ALGER'}]

Quelle expression vaut-elle ’RIO’ parmi les suivantes ?

Réponses

A t[4][’sejour’]
B t[5][’sejour’]
C t(’id’=5)
D t.[’id’=5].[’sejour’]

Correction : Réponse A

Ici nous avons affaire a une « matrice-dictionnaire » (il doit y avoir un nom et je pense que le prof va me le donner quand il va faire un AVC en lisant ceci). Ayant parfaitement suivi les cours de NSI vous saurez effectuer les code ci-dessus. Nous savons donc que si on met l’expression  t[5]['sejour'], cela va nous renvoyer ALGER, si on met  t('id'=5), votre estime envers Spyder va chuter gravement et ce dernier va vous sermonner d’un SyntaxError: keyword can't be an expression, si on rentre t.['id'=5].['sejour'] ,ça sera la même chose mais vous vous prendrez un sale SyntaxError: invalid syntax qui fait toujours plaisir. Seul la réponse a qui ira chercher la valeurs de ’sejour’ dans le « dico numéro » 4 (soit le 5e car on part de 0) vous octroiera le plaisir de voir ce magnifique RIO apparaître.

Question C.4 Picasso, la question explosive (j’assume pas cette blague alors je la cache (edit du migreur : c’est plus caché 😁)

On utilise habituellement un fichier d’extension csv pour quel type de données ?

Réponses

A des données structurées graphiquement
B des données sonores
C des données compressées
D des données structurées en tableau

Correction : Réponse D

On a vu plus haut que le fichier csv est de type tableur. Tableur étant issu du latin tabula (qui signifie planche), il est de la même famille que tableau (je met a contribution mes acquis de français que je ne pourrait malheureusement pas ressortir pour le BAC de Français cette année…). Un fichier csv de type TABLEUR va donc être utilisé pour des données structurées en TABLEAU.

Question C.5

Soit la table de données suivante :

nom prenom date_naissance
Dupont Pierre 17/05/1987
Dupond Catherine 18/07/1981
Haddock Archibald 23/04/1998

Quels sont les descripteurs de ce tableau ?

Réponses

A nom, prenom et date_naissance
B Dupont, Pierre et 17/05/1987
C Dupont, Dupond et Haddock
D il n’y en a pas

Correction : Réponse A

Les proposition A sont des descripteur et les autres propositions sont des valeurs des descripteurs. Je n’ai vraiment pas de quoi argumenter plus, il fallait apprendre sa leçon les loulous.

Question C.6

Qu’est-ce qu’un fichier CSV ?

Réponses

A une librairie Python permettant l’affichage des images
B un utilitaire de traitement d’image
C un format d’image
D un format de données

Correction : Réponse D

Bon la, clairement, si j ai encore des choses a vous apprendre sur le format csv après les réponses précédentes, c’est vraiment que je dois me reconvertir totalement dans le sauvetage des ours polaire… Mai bon reprenons ! Donc un fichier CSV est un fichier qui représente des données sous forme de tableau. Donc pas des images. Vraiment pas. Non.

Thème D : interactions entre l’homme et la machine sur le Web

Question D.1

Un élément form (un formulaire) d’une page HTML contient un élément button de type submit. Un clic sur ce bouton :

Réponses

A envoie les données du formulaire vers la page définie par l’attribut action de l’élément formRetour ligne automatique
B efface les données entrées par l’utilisateur dans le formulaireRetour ligne automatique
C envoie les données du formulaire vers la page définie par l’attribut method de l’élément formRetour ligne automatique
D ne fait rien du tout si un script javascript n’est pas associé au bouton

Correction : Réponse A

Si un bouton possède le type submit, cela veut dire que lorsque le bouton sera sollicité, le formulaire va être soumis au serveur en utilisant l’attribut action (qui sert a indiquer une action a exécuter lors de l’envoi de données). Du coup c’est un peu comme si vous rendiez un devoir sauf qu’il n’y a aucun risque que vos parents sortent de l’ordinateur si ça ne va pas.

Question D.2

Quelle méthode est utilisée via une requête HTTP pour envoyer une image via un formulaire HTML ?

Réponses
 
A HEAD
B PUT
C POST
D GET

Correction : Réponse C

Reprenons chaque requête proposé ici : 

  • HEAD sert notamment a économiser de la bande passant en demandant seulement les en-têtes de la même manière que la méthode GET. C’est comme si vous commandiez seulement le capuchon d’un stylo au lieu du stylo sur Internet pour payer moins. Si c’est le cas vous êtes non seulement radin, mais également très bizarre. 
  • PUT remplace une représentation de la ressource ciblée par le contenu de la requête. Pour imager, on va faire un carré sur le sol et dire « Ici il y aura Thierry Beccaro ». Notre pote PUT va alors nous chercher Thierry Beccaro et le mettre dans le carré (Note : la spécialité NSI de Louis Pasteur rejette toute responsabilité dans le cas ou des élèves tenterai de faire des invocation sataniste de Thierry Beccaro). 
  • POST envoie des données au serveur. Il est important que POST ne soit pas un forceur sinon le serveur peut faire un Burn-Out. 
  • GET demande une représentation de la ressource spécifiée. Ils servent donc a récupérer des données ( Note : aucun serveur n’est maltraité pendant l’interrogatoire de GET).
  • La requête la plus couramment utilisé pour un envoi d’image est donc la requête POST car il effectue un envoi de donnés.

Question D.3

Les pages HTML sont affichées par …

Réponses

A le compilateur 
B le serveur 
C l’interpréteur
D le navigateur Web

Correction : Réponse D

Votre navigateur web, qui est probablement Google Chrome (Safari si vous êtes riche et Yahoo si vous êtes un vieillard), affichera les pages HTML qui sont stocké sur un serveur.

Question D.4

Dans le code HTML les délimiteurs tels que <body> et </body> s’appellent ?

Réponses

A des bornes
B des balises
C des paragraphes
D des liens

Correction : Réponse B

Si vous avez suivi les cours d’NSI vous aurait eu juste à cette question.

Question D.5

Un fichier HTML contient la ligne suivante.
<p>Coucou ! Ca va?</p>
Quelle commande CSS écrire pour que le texte apparaisse en rose sur fond jaune ?

Réponses

A p { couleur: rose ; fond: jaune;}
<p> { color = pink background-color = yellow}
C <p> { color = pink ; background-color: yellow} </p>
p { color: pink ; background-color: yellow ;}

Correction : Réponse D
Si on respecte la syntaxe du css on peut déduire que c’est la réponse D.

Question D.6

Un élève a écrit une fonction javascript qui détermine la moyenne des valeurs entrées par l’utilisateur dans un formulaire de sa page HTML.
Il place sa fonction javascript

Réponses

A entre la balise <js> et la balise </js>
B entre la balise <code> et la balise 
C entre la balise <script> et la balise </script>
D entre la balise <javascript> et la balise </javascript>

Correction : Réponse C
Encore une question en rapport avec la syntaxe d’un language de programmation. Si tu avais répondu autre chose que la C ce n’est pas grave puisque le JavaScript c’est PAS(édit du migreur) nul !

Thème E : architectures matérielles et systèmes d’exploitation

Question E.1

Le répertoire personnel de l’utilisateur contient deux répertoires tempo et sauve.
On souhaite déplacer le fichier bac.txt du repertoire tempo vers le répertoire sauve.
Quelle commande permet de réaliser ce déplacement ?

Réponses

A mkdir /tempo/bac.txt /sauve
B mkdir /sauve /tempo/bac.txt
C mv /tempo/bac.txt /sauve
D mv /sauve /tempo/bac.txt

Correction : Réponse C
La commande mv qui veut dire move (« bouger », pour ceux qui sont nul en anglais). On déplace le fichier bac.txt qui était dans le repertoire tempo dans le repertoire sauve.

Question E.2

Dans la console Linux, quelle commande faut-il exécuter pour effacer le fichier test0.csv ?

Réponses

A rm test0.cvs
B cp test0.csv
C ls test0.csv
D mv test0.csv

Correction : Réponse A
rm —>remove
cp —>copy
ls—>list
mv —>move
Si vous etes nul en anglais copier coller ces mots dans Google traduction.

Question E.3

Quel est le rôle de la commande shell ls ?

Réponses

A basculer en mode administrateur
B lister le contenu du répertoire courant
C donner un accès complet à un fichier
D effacer le contenu du répertoire courant

Correction : Réponse B
ls est une abreviation de « lister » en anglais. Vous l’auriez si vous avez eu une bonne note aux EC3.

Question E.4

L’adresse IP du site www.education.gouv.fr est 185.75.143.24.
Quel dispositif permet d’associer l’adresse IP et l’URL www.education.gouv.fr ?

Réponses

A un routeur
B un serveur DNS
C un serveur de temps
D un serveur Web

Correction : Réponse B
Le serveur DNS (Domain Name System, ou Système de noms de domaine en français) est un service dont la principale fonction est de traduire un nom de domaine en adresse IP. Maintenant que vous avez l’adresse IP du serveur du ministère vous pouvez surement le hacker et modifier les notes du BAC !

Question E.5

Que peut-on dire du système de fichiers, suite à l’exécution des commandes suivantes ?
% ls
entier.py flottant.py readme.md
% mkdir foo
% mv *.py foo

Réponses

A les fichiers entier.py, flottant.py, et foo ont été déplacés dans le répertoire de l’utilisateur
B l’utilisateur foo est propriétaire des fichiers entier.py et flottant.py
C le répertoire foo contient le résultat de l’exécution des deux fichiers entier.py et flottant.py
D le répertoire foo contient deux fichiers d’extension .py

Correction : Réponse D
Le *.py représente tous les fichiers python qu’on déplace (commande mv) vers le répertoire foo.

Question E.6

Dans un terminal sous Linux, à quoi sert la commande traceroute ?

Réponses

A à afficher un itinéraire routier entre deux villes
B c’est un synonyme pour la commande ping
C à afficher le chemin suivi par des paquets à travers un protocole IP
D à suivre pas à pas l’exécution d’un programme

Correction : Réponse C
Y’a vraiement trop de mots anglais… Ce QCM est plus un cours d’anglais que d’NSI.
Si vous avez choisi la réponse A je crois que vous devriez retourner en section L.

Thème F : Langages et Programmation

Question F.1
 
La fonction Python suivante ne calcule pas toujours correctement le résultat de 𝑥^y pour des arguments entiers.

def puissance (x,y):
 p = x
 for i in range (y - 1):
 p = p * x
 return p

Parmi les tests suivants, lequel va permettre de détecter l’erreur ?
 
Réponses
 
puissance(2,0)
puissance(2,1)
puissance(2,2)
puissance(2,10)
 
Correction : Réponse A
 
C’est reparti pour du Python ! Ce programme est censé calculer l’exposant d’un nombre : x est le nombre, et y est l’exposant. 
Comme on le sait depuis la quatrième, un nombre exposant 0 est TOUJOURS égal à 1.
Sauf, que il y a un problème, car si on entre puissance(2,0), le programme va nous renvoyer 0. Pourquoi ?

La ligne 4 du programme, p = p * x, revient à faire 2*2, dans le cas de la réponse A.

Et devinez quoi, 2*2 n’est pas égal à 1, mais bien à 4. Il faudrait donc rajouter une ligne à ce programme, permettant de renvoyer automatiquement 1 quand y=0.

Question F.2
 
On considère le code suivant :

def puiss(y,x):
 res = y
 for i in range(x):
 res = res*y
 return res

Quelles sont les préconditions sur les arguments ?
 
Réponses
 
A Les arguments doivent être obligatoirement de type entier
B Les arguments peuvent être de type entier ou flottant
C Le type des arguments n’a pas d’importance
D Il n’y a pas de préconditions dans ce cas
 
Correction : Réponse A 

Pour répondre à cette question, il faut bien comprendre le programme :

Ce programme est le même que le précédent, sauf que 1 est ajouté à l’exposant (Par exemple, si vous entrez puiss(2,3), le programme ne vous donnera pas 2^3, mais 2^4)

Ce code ne fonctionne donc pas avec du texte, mais marche parfaitement avec des entier.

Question F.3
 
On considère l’instruction suivante :

  1. resultat=[0]*7

Que contient la variable resultat après son exécution ?
 
Réponses
 
0
[0]
[[0],[0],[0],[0],[0],[0],[0]]
[0,0,0,0,0,0,0]
 
Correction : Réponse D

Cette question, toute droit sortie des enfers, est infâme.

Tout d’abord, la réponse A et B sont fausses : La A car ce n’est pas une liste, et la B car il n’y a qu’un seul 0, alors qu’il devrait en avoir sept.

La réponse C est assez bizarre. C’est une liste de liste, mais elle n’a rien a faire là, car on veut juste une liste simple

La réponse D est donc la bonne réponse.

Question F.4
 
On définit une fonction f de la façon suivante :

def f(L,m):
R = []
for i in range(len(L)):
if L[i] > m:
R.append(L[i])
return R

On définit L = [1, 7, 3, 4, 8, 2, 0, 3, 5].
Que vaut f(L,4) ?
 
Réponses
 
[0, 7, 0, 0, 8, 0, 0, 0, 5]
[0, 0, 0, 5]
[7, 8, 5]
[]
 
Correction : Réponse C

Enfin une question simple !

Le programme sert a relever les éléments d’une liste qui sont plus grands que m.
Ici, m=4, donc le programme doit renvoyer tous les éléments de L qui sont plus grands que 4, soit 7,8 et 5.

Question F.5
 
Un programme Python commence par la ligne :

import os

À quoi sert cette ligne ?
 
Réponses
 
A C’est le début du squelette de tout programme Python
B C’est la déclaration du système d’exploitation (operating system)
C Python 3.6 exige cette ligne au début de tout programme
D C’est la déclaration d’une bibliothèque (ou module) que le programme compte utiliser
 
Correction : Réponse D

Quand une ligne de code commence par « import », c’est que une bibliothèque va être utilisée.

C’est un peu court comme explication, mais il y a Affaire Conclue sur France 2 qui vient de commencer, et c’est vraiment très IMPORTant pour moi (humour).

Question F.6
 
On exécute le script Python suivant :

def cube(a):
a = a*a*a
return a
a = 2
b = cube(a)

Que vaut le couple (a, b) à la fin de l’exécution
 
Réponses
 
A  (8, 8)
B  (8, 2)
C  (2, 2)
D  (2, 8)


Correction : Réponse D

Dans cette question, l’académie a décidé de nous faire voyager.
Nous avons, dans l’ordre, les Vosges, le Tarn et Garonne, les Cotes d’Armor, et l’Eure-et-Loire, avec son fameux musée du caoutchouc.

Premièrement, on sait que dans tout les cas, a=2.
Pour b, on sait que b=cube(a).
Le nom de la fonction est assez explicite, et il n’y a pas de piège, même la porte parole du gouvernement pourrait y arriver.

2 au cube est égale à 8, c’est donc le couple (2,8) et l’Eure-et-Loire qui remporte cette question.

Thème G : Algorithmique

Question G.1
 
On dispose en quantité illimité de pièces de 1 euro, 2 euros et 5 euros. On veut totaliser une somme de 18 euros.
Quelle est la solution donnée par l’algorithme glouton ?

Réponses
 
A  [5, 5, 5, 2, 1]
B  [5, 5, 5, 2, 2, 1]
C  [5, 5, 2, 2, 2, 1, 1]
D  [5, 2, 2, 2, 2, 1, 1, 1, 1, 1]

Correction : Réponse A

Ah, le tri. Comme dans la vraie vie, le tri c’est dur à faire, mais c’est bien utile.
La solution donnée par l’algorithme glouton doit être la plus optimisée possible :
Ici, la réponse la plus optimisée est celle ou le moins de pièces possible sont utilisées pour former 18€ en tout.Retour ligne automatique
La bonne réponse est donc la A.

Question G.2
 
Quel est l’ordre de grandeur du coût du tri par insertion (dans le pire des cas) ?

Réponses
 
A L’ordre de grandeur du coût dépend de l’ordinateur utilisé
B Linéaire en la taille du tableau à trier
C Quadratique en la taille du tableau à trier
D Indépendant de la taille du tableau à trier

Correction : Réponse C

Dans le meilleur des cas, l’ordre de grandeur sera linéaire, dans le pire des cas quadratiques. Cette question est…. bizarre.
Et surtout, c »est à la frontière du programme de Première …

Décidément, ce sujet 42 nous réserve des surprises.

Question G.3
 
Quelle est la valeur de « element » à la fin de l’exécution du code suivant :

L = [1,2,3,4,1,2,3,4,0,2]
element = L[0]
for k in L:
if k > element:
element = k

Réponses
 
A 0
B 1
C 4
D 10

Correction : Réponse C

Ce type de question, on commence a avoir l’habitude. Ici, element va toujours prendre la valeur de l’élément le plus grand de la liste. C’est du tri par insertion.
La bonne réponse est donc la C, car 4 est le plus grand nombre de la liste.

Question G.4
 
La fonction ci-dessous permet d’effectuer une recherche par dichotomie de l’index m de l’élément x dans un tableau L de valeurs distinctes et triées.

L = [1,2,3,4,1,2,3,4,0,2]
def dicho(x,L):
g = 0
d = len(L)-1
while g <= d:
m = (g+d)//2
if L[m] == x:
return m
elif L[m] < x:
g = m+1
else:
d = m-1
return None

Combien de fois la cinquième ligne du code de la fonction (m = (g+d)//2) sera-t-elle exécutée dans l’appelRetour ligne automatique
dicho(32, [4, 5, 7, 25, 32, 50, 51, 60] ?

Réponses
 
A 1 fois
B 2 fois
C 3 fois
D 4 fois

Correction : Réponse C

Pour répondre à cette question, j’avoue que j’ai du recopier le script, et le modifier un peu, pour trouver le résultat.Retour ligne automatique
Pour trouver la solution, on a qu’a rajouter une variable compteur=0 à la ligne 2, et rajouter compteur=compteur+1 dans la boucle qui nous intéresse. On rajoute un return compteur aprés le return m, et le tour est joué ! Ma variable compteur=3, donc la bonne réponse est la C.

Non, ce n’est pas de la triche. C’est une aide, comme dirait une famille célèbre de 
Levallois Perret.

Question G.5
 
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

Réponses
 
A 0
B 2
C 3
D 10

Correction : Réponse C

Courage, c’est la dernière ligne droite ! Pour souffler un peu, voila une question faisable : ce programme renvoie le nombre de fois qu’un nombre est dans une liste. Ici, il faut trouver le nombre de fois que L[1], ou 2, est dans la liste L.

Je pense que vous l’avez compris, pour répondre à cette question, il va falloir COMPTER.

Si on compte le nombre de fois ou 2 apparait dans la liste L, on trouve le chiffre 666, qui correspond à la réponse… Hein ? 
Oups, je me suis surement trompé dans le compte. En fait, on compte 3 deux, ce qui correspond à la réponse C

Question G.6
 
La fonction suivante doit déterminer la valeur maximale d’un tableau de nombres passé en argument. Avec quelles expressions faut-il remplacer les pointillés du script suivant pour que la fonction soit correcte ?

def maximum(T):
 maxi = T[0]
 n = len(T)
 for i in range(i, .....):
 	if T[i] > maxi:
      maxi = ......
 return maxi

Réponses
 
A n puis T[i]
B n puis T[i-1]
C n-1 puis T[i]
D n-1 puis T[i-1]

Correction : Réponse C

On y est. La question 42. La réponse de la vie. Ce doit surement être une question incroyable, unique, sensationnelle…

Et bien non, c’est encore du Python et des listes. Dommage.

C’est encore un programme qui permet de trouver le maximum d’une liste qu’il faut décortiquer.Retour ligne automatique
Premièrement, le premier blanc se complète obligatoirement par n-1, sinon, la boucle ne s’arrêterait jamais, et ferait planter le logiciel (ça sent le vécu). Ensuite, la variable maxi est égale au plus grand élément de la liste, donc si T[i ]> maxi, alors maxi = T[i]

La bonne réponse est donc la C.

Outro

Voici donc la fin de ce sujet 42. Si vous lisez ses lignes, vous n’êtes peut être pas prêt pour hacker la NASA, ni pour coder Google, mais vous pouvez vous vanter d’avoir compris le sujet 42.

Et ça, c’est inestimable.

Mission accomplished, jeune padawan.

Vous pouvez réagir ici :

Projets

Convertisseur de texte en binaire ou héxadécimal

Ce projet est un convertisseur de texte en une écriture binaire ou bien hexadécimal. Une chaine de caractère est codée soit en binaire, soit en hexadécimal.

Présentation du programme

Le programme commence simplement par demander a l’utilisateur si il souhaite convertir son message en binaire ou en héxadécimal , pour cela nous avons utilisé une boucle en while :

def menu():
    print("Souhaitez vous transcrire votre message en binaire ou hexadécimal ?")
    print("1. binaire")
    print("2. hexadécimal")
    choix = 0
    while choix==0:
        choix = int(input("="))
    if choix==1 :
        fonction1()
    elif choix==2 :
        fonction2()
    else :
            menu()

Nous avons donc crée une fonction appelée menu() que nous avons définie. A l’intérieur le programme demande à l’utilisateur en quel langage il souhaite convertir son message et il lui montre les deux possibilités ( ici 1.binaire et 2.hexadécimal ) . On crée une valeur appelé choix qui représente le choix de langage de l’utilisateur , tant que cette valeur est égal a 0 le programme va demander à l’utilisateur de lui affectée une valeur. Alors si la valeur et égal à 1 le programme exécutera la fonction1() , si la valeur est égal a 2 le programme exécutera la fonction2() et si l’utilisateur ne rentre pas une de ces deux valeurs le programme lui affiche a nouveau la fonction menu() pour que l’utilisateur puisse relire les choix proposés rentrer une valeur reconnaissable par le programme.

Il faut ensuite demander à l’utilisateur le message qu’il souhaite convertir , mais il faut aussi découper son message caractères par caractères pour pouvoir ensuite convertir chaque caractères en son équivalent en binaire ou hexadécimal. Nous avons donc crée une fonction appelée split() (divise en anglais) :

def split(word):
    return list(word)
word = input(print("Faites-moi part de votre message secret :"))

La commande list découpe la valeur de word caractère par caractère et transforme le message on une liste de caractères. Et on demande à l’utilisateur de rentrer son message.

Retour ligne automatique

Après il ne nous reste plus qu’a définir les fonctions 1 et 2 :

def fonction2():
    print(hex(int.from_bytes(word.encode(), 'big'))[2:])
 
def fonction1():
    d = word.encode()
    for i in d:
        print(bin(i)[2:])

La fonction1() sert à convertir le message de l’utilisateur en binaire. On crée une valeur nommée d dans laquelle on code le message de l’utilisateur grâce à la commande .encode qui va convertir la valeur de word (donc convertir chaque caractère de la liste) en son équivalent se trouvant dans UNICODE (un système qui classes tous les caractères de toutes les langues répertoriées et qui leurs attribue une un code ). On affiche ensuite chaque caractères de d converti avec la commande bin qui converti un code UNICODE en binaire , et on rajoute [2 :] pour supprimer deux caractères écrit qui sont normalement utilisés pour dire en quel langage s’affiche la valeur converti par bin.

La fonction2 sert à convertir message de l’utilisateur en hexadécimal . On a utilisé ici une autre manière qui fonctionne de même que pour celle de la fonction1 , on code le message de l’utilisateur avec .encode , on luit demande de convertir cela en hexadécimal avec la commande hex , on lui dit de bien commencer par la début avec ’big’, et encore une fois on supprime les deux premiers caractères codés grâce à [2 :] .

Etat final du projet

def fonction2():
    print(hex(int.from_bytes(word.encode(), 'big'))[2:])
 
def fonction1():
    d = word.encode()
    for i in d:
        print(bin(i)[2:])
 
def split(word):
    return list(word)
word = input(print("Faites-moi part de votre message secret :"))
 
def menu():
    split(word)
    print("Souhaitez vous transcrire votre message en binaire ou hexadécimal ?")
    print("1. binaire")
    print("2. hexadécimal")
    choix = 0
    while choix==0:
        choix = int(input("="))
    if choix==1 :
        fonction1()
    elif choix==2 :
        fonction2()
    else :
            menu()
         
menu()

Conclusion

C’est un programme assez simple qui permet de comprendre comment utiliser des fonctions , ainsi que l’utilisation de certaines commandes utiles .