13 - Exo types construits
Exercice de l'activité Python Types construits
1 - String
✎ 01° Soit la variable s suivante :
1 |
|
- Qu'est-ce qui montre que le type de s est un string (str en Python) ?
- Fournir l'appel de fonction native permettant de connaître le type de s depuis la console.
- Expliquer pourquoi la longueur de ce string est 5.
- Fournir l'appel de fonction native permettant de connaître la longueur de s depuis la console.
...CORRECTION...
- C'est la présence de GUILLEMETS autour du texte qui permet de comprendre qu'il s'agit d'un string.
- Voici comment obtenir le type :
- Le string comporte N, S, I et deux points. Soit 5 caractères
- Voici comment obtenir sa longueur :
>>> type(s)
<class 'str'>
>>> len(s)
5
✎ 02° Toujours avec ce même string :
1 |
|
Associer chaque expression 1-2-3 ci-dessous à l'une des significations A-B-C proposées.
Expressions
- s
- i
- s[i]
Sémantique de l'expression
- L'indice d'une case du string
- Le string
- Le contenu de la case i du string
...CORRECTION...
- s : le string
- i : l'indice d'une case
- s[i] : le contenu de la case i
✎ 03° Placer un commentaire à côté du chacune des lignes de ce programme pour expliquer ce qu'il réalise. Vous pouvez éventuellement le lancer pour vérifier ou comprendre ce qu'il fait.
1
2
3
4
5
6
7
8
9 |
|
...CORRECTION...
1
2
3
4
5
6
7
8
9 |
|
✎ 04° On considère que l'utilisateur tape NSI lors du input(). On considérera donc qu'après exécution de la ligne 8, p fait référence à NSI".
- Sachant, qu'en ligne 9, on voit qu'on appelle epeler() en lui envoyant p, que va contenir phrase lors de cet appel ?
- Quelles seront les valeurs successives que prendra i lors de la boucle sur les lignes 3-4 ?
- Ecrire la séquence de lignes qui va s’exécuter lors du fonctionnement.
1
2
3
4
5
6
7
8
9 |
|
...CORRECTION...
- phrase reçoit p donc "NSI".
- len(phrase) renvoie 3. La variable de boucle i va donc prendre les valeurs 0, 1 et 2.
- Voici la succession de lignes :
L1 (déclaration)
L7-L8-L9(appel)-L1-L2
L3(i=0)-L4
L3(i=1)-L4
L3(i=2)-L4
L5-L9(retour)
Fin
2 - Tableau statique
✎ 05° Soit la variable t suivante :
1 |
|
- Qu'est-ce qui montre que le type de t est un tableau (list en Python) ?
- Fournir l'appel de fonction native permettant de connaître le type de t depuis la console.
- Expliquer pourquoi la longueur de ce tableau est 3.
- Fournir l'appel de fonction native permettant de connaître la longueur de t depuis la console.
...CORRECTION...
- C'est la présence de CROCHETS qui permet de comprendre qu'il s'agit d'un string.
- Voici comment obtenir le type :
- Le tableau comporte 3 cases.
- Voici comment obtenir sa longueur :
>>> type(t)
<class 'list'>
>>> len(t
3
✎ 06° Toujours avec ce même tableau :
1 |
|
Associer chaque expression 1-2-3 ci-dessous à l'une des significations A-B-C proposées.
Expressions
- t
- i
- t[i]
Sémantique de l'expression
- L'indice d'une case du tableau
- Le tableau
- Le contenu de la case i du tableau
...CORRECTION...
- t : le tableau
- i : l'indice d'une case
- t[i] : le contenu de la case i du tableau t
✎ 07° Toujours avec ce même tableau :
1 |
|
- Evaluer l'expression t[0]
- Evaluer l'expression t[1]
- Evaluer l'expression t[2]
...CORRECTION...
- t[0] est évaluée à 10.
- t[1] est évaluée à 15.
- t[2] est évaluée à 12.
✎ 08° Quelles vont être les valeurs successives prises par i dans ce programme :
1
2
3
4 |
|
...CORRECTION...
Puisque le tableau possède 3 cases, les valeurs possibles seront 0 puis 1 puis 2.
✎ 09° Poursuivre le déroulé d'exécution du programme précédent. Voici le début :
- Ligne 1 : Affectation de s à 0.
- Ligne 2 : Affectation de t
- Ligne 3 (avec i=0)
- Ligne 4 : Incrémentation de s de t[0] : s référence 10.
- Ligne 3 (avec i=1)
- Ligne 4 : Incrémentation de s de ... : s référence ...
- ...
...CORRECTION...
- Ligne 1 : Affectation de s à 0.
- Ligne 2 : Affectation de t
- Ligne 3 (avec i=0)
- Ligne 4 : Incrémentation de s de t[0] : s référence 10.
- Ligne 3(avec i=1)
- Ligne 4 : Incrémentation de s de t[1] : s référence 25 (10+15)
- Ligne 3(avec i=2)
- Ligne 4 : Incrémentation de s de t[2] : s référence 37 (25+12)
✎ 10° Voici une fonction très mal nommée puisqu'on ne comprend pas ce qu'elle fait simplement en regardant son nom. Quel nom lui donneriez-vous pour rendre son utilité plus explicite ?
1
2
3
4
5 |
|
...CORRECTION...
Cette fonction doit visiblement recevoir un tableau en entrée.
Son fonctionnement est similaire à la question précédente : elle réalise la somme des valeurs contenus dans le tableau.
On pourrait donc nommer cette fonction somme() ou sommer() ou additionner()...
1
2
3
4
5 |
|
✎ 11° Les tableaux sont-ils MUABLES ou IMMUABLES en Python ?
Expliquer ce qui va se passer si on tape ces instructions :
>>> notes = [5, 13, 18, 7]
>>> notes[1] = 15
...CORRECTION...
Le tableau était muable, on peut modifier le contenu d'une case (ici la case 1 QUI N'EST PAS LA PREMIERE) et remplacer son contenu.
On aurait alors ceci :
>>> notes = [5, 13, 18, 7]
>>> notes[1] = 15
>>> notes
[5, 15, 18, 7]
3 - N-uplet
✎ 13° Questions générales :
- Quel est le caractère qui permet de déclarer des n-uplets en Python ?
- Quel est le nom de ce type de donnée en Python ?
- Ce type est-il MUABLE ou IMMUABLE en Python ?
...CORRECTION...
- Il s'agit des parenthèses.
- En Python, on parle de tuple.
- Ce type est IMMUABLE : on ne peut pas changer le contenu des cases après création.
✎ 14° Comment extraire le prénom des informations d'un individu sachant que le prénom est sur l'indice 2.
>>> individu = ('policier', 'McClane', 'John', 4842)
>>> ???
...CORRECTION...
>>> individu = ('policier', 'McClane', 'John', 4842)
>>> individu[2]
'John'
4 - Dictionnaire
✎ 15° Questions générales :
- Quel est le caractère qui permet de déclarer des dictionnaires en Python ?
- Quel est le nom de ce type de donnée en Python ?
- Ce type est-il MUABLE ou IMMUABLE en Python ?
...CORRECTION...
- Il s'agit des accolades.
- En Python, on parle de dict.
- Ce type est MUABLE : on peut changer le contenu des cases après création.
✎ 16° Voici un dictionnaire où les clés sont des personnes identifiées par une lettre. La valeur associée est la personne suivante dans la chaîne.
>>> chaine = {'alice': 'charlie', 'bob': 'alice', 'charlie': 'bob'}
Questions
- En observant le dictionnaire, dire à qui Alice donnerait un message qu'elle reçoit ?
- Que doit-on taper dans la console pour que Python réponde à la question précédente sachant que la clé est la personne et la valeur la personne suivante ?
...CORRECTION...
- En cherchant à la main la clé 'alice', on voit que la valeur associée est 'charlie'. Alice va donc donner son message à Charlie.
- Que doit-on taper dans la console pour que Python réponde à la question précédente sachant que la clé est la personne et la valeur la personne suivante ?
>>> chaine = {'alice': 'charlie', 'bob': 'alice', 'charlie': 'bob'}
>>> chaine = {'alice': 'charlie', 'bob': 'alice', 'charlie': 'bob'}
>>> chaine['alice']
'charlie'
✎ 17° Quelles sont les évaluations successives qu'il faudrait taper dans la console pour parvenir à suivre le chemin d'un message partant d'alice jusqu'à ce que le message lui revienne dans cette chaîne ?
>>> chaine = {'alice': 'charlie', 'bob': 'alice', 'charlie': 'éléonore', 'dana':'', 'eléonore': 'farid', 'farid': 'alice'}
>>> ???
...CORRECTION...
>>> chaine = {'alice': 'éléonore', 'bob': 'alice', 'charlie': 'farid', 'dana':'bob', 'eléonore': 'charlie', 'farid': 'alice'}
>>> chaine['alice']
'éléonore'
>>> chaine['éléonore']
'charlie'
>>> chaine['charlie']
'farid'
>>> chaine['farid']
'alice'
La chaîne est donc alice -> éléonore -> charlie -> farid -> alice
FIN
Activité publiée le 04 10 2023
Dernière modification : 04 10 2023
Auteur : ows. h.