Les conteneurs Python
💻 Travail n° 1 Jours de la semaine
🎯 Travail à faire :
-
Constituer une liste
semaine
contenant les 7 jours de la semaine. -
À partir de cette liste, donner les expressions permettant de récupérer seulement les 5 premiers jours de la semaine d’une part, et ceux du week-end d’autre part en utilisant le slicing avec des indices positifs.
-
Même question en utilisant des indices négatifs.
-
Trouver 2 expressions différentes permettant d’accéder au dernier jour de la semaine.
-
Inverser les jours de la semaine en une seule expression.
💻 Travail n° 2 Nombre de voyelles et de consonnes d’une phrase
🎯 Travail à faire :
On vous donne une expression Python qui permet d’initialiser une liste avec toutes les lettres minuscules de l’alphabet :
alphabet = [chr(lettre) for lettre in range(ord('a'), ord('z') + 1)]
Explication détaillée de cette expression :
Cette expression — qui utilise une compréhension de liste — évite d’avoir à écrire manuellement toutes les lettres de l’alphabet, ce qui la rend plus flexible et moins sujette aux erreurs.
-
ord('a')
etord('z')
:
La fonctionord()
renvoie la valeur Unicode d’un caractère. Ainsi,ord('a')
renvoie 97 (la valeur Unicode de 'a') etord('z')
renvoie 122 (la valeur Unicode de 'z'). -
range(ord('a'), ord('z') + 1)
:
Cette partie crée une séquence de nombres allant de 97 à 122 inclus. Le+ 1
est nécessaire carrange()
n’inclut pas la borne supérieure. -
chr(lettre)
:
La fonctionchr()
est l’inverse deord()
. Elle prend une valeur Unicode et renvoie le caractère correspondant. Ici, elle convertit chaque nombre de la séquence en sa lettre correspondante. -
[chr(lettre) for lettre in …]
:
C’est une compréhension de liste. Elle parcourt chaque nombre de la séquence créée parrange()
, convertit ce nombre en lettre avecchr()
, et ajoute cette lettre à la nouvelle liste.
Le résultat final est une liste contenant toutes les lettres minuscules de 'a' à 'z'.
Faire un script qui :
-
demande à l’utilisateur de saisir une phrase
-
détermine et affiche le nombre de voyelles et de consonnes contenues dans cette phrase
Vous utiliserez pour cela 2 listes : voyelles
et consonnes
.
La liste consonnes
sera initialisée obligatoirement à partir d’une compréhension de liste sachant que l’alphabet comporte 6 voyelles (→ '‘a’, ‘e’, ‘i’, ‘o’, ‘u’, ‘y’) et qu’une consonne est une lettre de l’alphabet … qui n’est pas une voyelle !
Une fois les 2 listes voyelles
et consonnes
initialisées, l’algorithme consiste uniquement à tester l’appartenance de chaque lettre de la phrase à une des ces 2 listes et à incrémenter un compteur le cas échéant.
Vous veillerez au fait que la phrase saisie par l’utilisateur peut contenir des majuscules : il faudra donc la convertir en minuscules avant son traitement (→ consulter Text Sequence Type — str
pour trouver un moyen de le faire).
Saisir une phrase : HELLO world !
La phrase :
"HELLO world !"
contient 3 voyelles et 7 consonnes
💻 Travail n° 3 Scanner IP basique
On vous demande de coder en Python un scanner IP basique qui va tester chacune des adresses IP de notre réseau (→ 192.168.4.0/22) avec la commande ping
pour voir si un hôte y est joignable.
🎯 Travail à faire :
-
Constituer une liste
hosts
qui contiendra — sous forme de chaînes de caractères — toutes les adresses IP du réseau 192.168.4.0/22 (→ ['192.168.4.1'… '192.168.7.254']).Vous pouvez procéder en plusieurs étapes en constituant une liste pour chaque plage (→ 192.168.4.X, 192.168.5.Y, 192.168.6.Z, 192.168.7.T) puis en les ajoutant chacune dans la liste
hosts
. -
Pinger chaque IP contenue dans la liste
hosts
pour voir si l’hôte correspondant est joignable puis l’ajouter dans une listereachableHosts
le cas échéant.Voici une portion de code Python qui permet de pinger une adresse IP en utilisant la commande
ping
de Windows :import subprocess hostIP = '192.168.4.1' (1) command = ['ping', '-w', '2000', '-n', '2', hostIP] (2) ping_response = subprocess.run(command , capture_output=True , text=True , encoding='cp437' , timeout=10 , check=False ) (3) if f"Réponse de {hostIP}" in ping_response.stdout : (4) print(f"ping {hostIP} : OK") else: print(f"ping {hostIP} : NOK")
1 adresse IP à pinger 2 définition de la commande ping
(avec ses options) à faire exécuter par Python3 exécution du ping
par Python. La fonctionsubprocess.run(…)
peut nécessiter de nombreux paramètres. Ici, on spécifie essentiellement que l’on veut capturer (→capture_output=True)
sous forme de texte (→text=True
) la sortie “écran” des commandesping
, encodée par défaut encp437
dans la console Windows (→encoding='cp437'
). Cette sortie “écran” est ensuite utilisée pour déterminer si le ping a abouti ou pas.4 test de réussite ou d’échec du ping en inspectant sa sortie “écran”. Sous Windows, on ne peut pas se contenter de tester le code de sortie de la commande ping pour déterminer si un hôte réseau est joignable ou pas. En effet, cette commande peut retourner un code OK même lorsqu’elle indique sur sa sortie écran qu’un hôte n’est pas joignable.
-
Que signifient les options “-n 2” et “-w 2000” passées à
ping
dans l’exemple ci-dessus ? -
Afficher pour finir la liste des hôtes joignables sur le réseau.
SCANNING hosts in range [192.168.4.1 -> 192.168.4.6] ...
Attempt to join 192.168.4.1 -> OK
Attempt to join 192.168.4.2 -> OK
Attempt to join 192.168.4.3 -> NOK
Attempt to join 192.168.4.4 -> OK
Attempt to join 192.168.4.5 -> OK
Attempt to join 192.168.4.6 -> NOK
SCAN RESULT for range [192.168.4.1 -> 192.168.4.6] :
reachable hosts are :
192.168.4.1
192.168.4.2
192.168.4.4
192.168.4.5
Bye !
💻 Travail n° 4 Calculateur valeur de résistance
On désire faire un script Python qui donne la valeur d’une résistance électrique en Ohms à partir de la couleur des anneaux figurant dessus, un peu à la manière de ce calculateur disponible sur ce site internet
🎯 Travail à faire :
On vous donne le code partiel du script :
def getOhmsFromColors(a, b, c, d) :
pass
# Point d'entrée du script
if __name__ == "__main__":
a = "red"
b = "blue"
c = "black"
d = "brown"
# Appel de la fonction qui détermine la valeur d'une résistance
# en fonction de la couleur de ces anneaux
getOhmsFromColors(a, b, c, d)
Compléter le code de la fonction getOhmsFromColors()
de façon à ce qu’elle retourne la valeur en Ohms de la résistance dont les couleurs sont passées en paramètre :
-
a
= couleur du 1er anneau qui indique le 1er digit de la valeur de la résistance -
b
= couleur du 2ème anneau qui indique le 1er digit de la valeur de la résistance -
c
= couleur du 3ème anneau qui détermine la valeur du facteur de multiplication -
d
= couleur du 4ème anneau qui donne la tolérance
Les couleurs seront spécifiées en anglais.
Vous utiliserez des dictionnaires Python pour associer les couleurs aux valeurs numériques auxquelles elles correspondent.
Vous servirez du Calculateur de code couleur des résistances à 4 anneaux mis à disposition par le distributeur de composants Digikey pour vérifier les valeurs retournées par votre script en fonction des couleurs saisies.
Le script doit également signaler une erreur si une couleur non prise en charge est fournie à la fonction getOhmsFromColors()
Resistor value (red|blue|black|brown) = 26 Ω +/-1.00% (25.74 Ω -> 26.26 Ω)
🞄 🞄 🞄