Bonjour, J’ai les réponses du Vrai ou Faux sur les listes, tuples et dictionnaire en nsi. il y a la correction dans le livre mais pas l’explication du coup j’ai pas tout compris. Est-ce que quelqu’un pourrait me donner les explications stp
- Le 4 la réponse est Faux mais je n’ai pas compris pourquoi.
En plaçant [4,5] en argument de la fonction .append(), on essayer d'ajouter une liste à la fin d'une liste, donc on obtiendrait
▌ L = [1,2,3,[4,5]]
Pour avoir le résultat souhaité il aurait fallu faire
▌ L.append(4)
▌ L.append(5)
Car la fonction append n'accepte strictement qu'un seul argument.
5. Vrai
▌ L = [ 3*x for x in [1,2,3] if x%2 ]
On définit la variable L sur une liste de valeurs.
La définition de la liste commence par 3*x, donc on aura à répéter 3 fois l'instruction qui suit.
▌x for x in [1,2,3] if x%2
→ valeur de x pour x définit par les valeurs 1, 2 puis 3 si x%2 [se lit x modulo 2]
On va commencer par voir ce que le code donne si on retire la condition finale (if x%2)
▌ L = [3*x for x in [1,2,3]]
Il ferait comme ca:
▌ L = [ 3*1 , 3*2 , 3*3 ]
Donnant donc L = [3, 6, 9]
Seulement il y a cette condition, x modulo 2...
Le modulo (%)
Le modulo en informatique est une opération mathématique qui renvoi le reste d'un division écrite, c'est ce qui reste si on chercher un résultat de division entier.
Par exemple:
10%3 donne 1, car 10%3 donne 3*3 (9) et 1 de reste
7%2 donne 1, car car 7%2 donne 2*3 (6) et 1 de reste
4%2 donne 0 car 4%2 donne 2*2 (4) et 0 de reste
Quand cette opération est mise en condition, elle peut être utilisée comme un Booléen, procédé qui n'admet comme réponse que des True ou False, Vrai ou Faux.
Si la valeur du modulo donne zéro (0) cela veut dire qu'il est considéré comme "nul", donc faux.
Au contraire, si la valeur du modulo donne une résultat, il est considéré comme "vérifié", donc vrai
Revenons à la question
Donc cette condition if x%2 vient s'ajouter comme un critère de sélection.
▌x for x in [1,2,3] if x%2
→ valeur de x pour x définit par les valeurs 1, 2 puis 3 si x%2 donne autre chose que 0 [/si x n'est pas divisible par 2]
On pourrait rajouter cela à la fin, pour rendre la condition plus claire:
▌ L = [3*x for x in [1,2,3] if x%2 == True]
En pratique:
1%2 donne 1, car 1*1 (1) et reste 1 → True
2%2 donne 0, car 2*1 (2) et reste 0 → False
3%2 donne 1, car 1*3 (3) et reste 0 → True
Donc la condition nous impose de ne garder que 1 et 3, donnant donc
[3*1, 3*3]
Et il reste donc bien, au final : [3, 9]
6. Faux
La fonction len(liste) sert à renvoyer le dernière élément d'une liste, il s'agit d'une fonction d'appel (call) et ne peut donc pas servir à désigner ni à assigner une valeur (assign)
De plus, la formulation liste[argument] n'admet comme argument qu'un numéro d'index
Donc pour modifier le dernier élément on devrait écrire
▌ nombres[-1] = <nouvelle_valeur>
Ou soit en 2 lignes:
▌ nombres.pop()
Qui va supprimer le dernier élément, puis
▌ nombres.append("nouvelle_valeur")
Qui va redéfinir un élément qui va venir à la fin de la liste
8. Vrai
Si le dictionnaire est vide il ne comprend aucune clef (keys) ni aucune valeur (values), la console renverra donc une erreur de type "KeyError: 'un'"
▌ d['un']
Car l'instruction sert à appeler la valeur correspondante à la clef 'un' du dictionnaire
Par exemple
▌ d = {'un':'one' , 'deux':'two'}
Permet d'enrichir le dictionnaire et la console répondra donc
▌ print(d['un'])
▌ >>> one
9. Vrai
Quand on fait appel à une clef d'un dictionnaire les crochet ne peuvent admette qu'une seul key.
Donc si on a un dictionnaire qui ressemble à
▌ d = {'key':'clef' , 'value':'valeur' , 10:11 , 15:16}
Pour définir la valeur de 10 et de 15 sur 5 il faut le faire en 2 lignes.
Lista de comentários
Bonjour
4. Faux
En plaçant [4,5] en argument de la fonction .append(), on essayer d'ajouter une liste à la fin d'une liste, donc on obtiendrait
▌ L = [1,2,3,[4,5]]
Pour avoir le résultat souhaité il aurait fallu faire
▌ L.append(4)
▌ L.append(5)
Car la fonction append n'accepte strictement qu'un seul argument.
5. Vrai
▌ L = [ 3*x for x in [1,2,3] if x%2 ]
On définit la variable L sur une liste de valeurs.
La définition de la liste commence par 3*x, donc on aura à répéter 3 fois l'instruction qui suit.
▌x for x in [1,2,3] if x%2
→ valeur de x pour x définit par les valeurs 1, 2 puis 3 si x%2 [se lit x modulo 2]
On va commencer par voir ce que le code donne si on retire la condition finale (if x%2)
▌ L = [3*x for x in [1,2,3]]
Il ferait comme ca:
▌ L = [ 3*1 , 3*2 , 3*3 ]
Donnant donc L = [3, 6, 9]
Seulement il y a cette condition, x modulo 2...
Le modulo (%)
Le modulo en informatique est une opération mathématique qui renvoi le reste d'un division écrite, c'est ce qui reste si on chercher un résultat de division entier.
Par exemple:
Quand cette opération est mise en condition, elle peut être utilisée comme un Booléen, procédé qui n'admet comme réponse que des True ou False, Vrai ou Faux.
Revenons à la question
Donc cette condition if x%2 vient s'ajouter comme un critère de sélection.
▌x for x in [1,2,3] if x%2
→ valeur de x pour x définit par les valeurs 1, 2 puis 3 si x%2 donne autre chose que 0 [/si x n'est pas divisible par 2]
On pourrait rajouter cela à la fin, pour rendre la condition plus claire:
▌ L = [3*x for x in [1,2,3] if x%2 == True]
En pratique:
1%2 donne 1, car 1*1 (1) et reste 1 → True
2%2 donne 0, car 2*1 (2) et reste 0 → False
3%2 donne 1, car 1*3 (3) et reste 0 → True
Donc la condition nous impose de ne garder que 1 et 3, donnant donc
[3*1, 3*3]
Et il reste donc bien, au final : [3, 9]
6. Faux
La fonction len(liste) sert à renvoyer le dernière élément d'une liste, il s'agit d'une fonction d'appel (call) et ne peut donc pas servir à désigner ni à assigner une valeur (assign)
De plus, la formulation liste[argument] n'admet comme argument qu'un numéro d'index
Donc pour modifier le dernier élément on devrait écrire
▌ nombres[-1] = <nouvelle_valeur>
Ou soit en 2 lignes:
▌ nombres.pop()
Qui va supprimer le dernier élément, puis
▌ nombres.append("nouvelle_valeur")
Qui va redéfinir un élément qui va venir à la fin de la liste
8. Vrai
Si le dictionnaire est vide il ne comprend aucune clef (keys) ni aucune valeur (values), la console renverra donc une erreur de type "KeyError: 'un'"
▌ d['un']
Car l'instruction sert à appeler la valeur correspondante à la clef 'un' du dictionnaire
Par exemple
▌ d = {'un':'one' , 'deux':'two'}
Permet d'enrichir le dictionnaire et la console répondra donc
▌ print(d['un'])
▌ >>> one
9. Vrai
Quand on fait appel à une clef d'un dictionnaire les crochet ne peuvent admette qu'une seul key.
Donc si on a un dictionnaire qui ressemble à
▌ d = {'key':'clef' , 'value':'valeur' , 10:11 , 15:16}
Pour définir la valeur de 10 et de 15 sur 5 il faut le faire en 2 lignes.
▌ d[10] = 5
▌ d[15] = 5
Et là, le dictionnaire donnera
▌ {'key':'clef' , 'value':'valeur' , 10:5 , 15:5}
Bonne aprem ;)