Informatique

Question

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.

- le 5 la réponse est Vrai mais pas compris

- le 8 la réponse Vrai mais pas compris

Le 9 la réponse est Vrai mais pas compris.

Merci d’avance
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

1 Réponse

  • 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:

    • 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 1True

    2%2 donne 0, car 2*1 (2) et reste 0False

    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 ;)