Les conteneurs Python

Listes

💻 Travail n° 1 Jours de la semaine

🎯 Travail à faire :

  1. Constituer une liste semaine contenant les 7 jours de la semaine.

  2. À 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.

  3. Même question en utilisant des indices négatifs.

  4. Trouver 2 expressions différentes de semaine[6] permettant d’accéder au dernier jour de la semaine.

  5. 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)]

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 — construites éventuellement à partir de alphabet mais utilisant obligatoirement des compréhensions de listes.

Au besoin, on vous indique que les 5 voyelles ‘a’, ‘e’, ‘i’, ‘o’, ‘u’, ‘y’ sont respectivement au rang 0, 4, 8, 14, 20 et 24 de l’alphabet et qu’une consonne est une lettre de l’alphabet …​qui n’est pas une voyelle !

Une fois les 2 listes voyelles et consonnes intialisé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 (→ consulter Text Sequence Type — str link pour trouver un moyen de convertir une phrase en minuscules).

Résultat attendu :
Saisir une phrase : HELLO world !
La phrase :
        "HELLO world !"
contient 3 voyelles et 7 consonnes

💻 Travail n° 3 Scanner IP basique

L’adresse de notre réseau informatique est 192.168.4.0/22.

On vous demande de coder en Python un scanner IP basique qui va tester chacune des adresses IP de ce réseau avec la commande ping pour voir si un hôte y est joignable.

🎯 Travail à faire :

  1. 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.

  2. Pinger chaque IP contenue dans la liste hosts pour voir si un hôte y est présent puis l’ajouter dans une liste reachableHosts 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'
    ping_response = subprocess.run(f"ping -n 1 {hostIP}", stdout=subprocess.DEVNULL, shell=True)
    if ping_response.returncode == 0:
        print (f"ping {hostIP} : OK")
    else:
        print (f"ping {hostIP} : NOK")
  3. Que signifie l’option “-n 1” passée à ping dans l’exemple ci-dessus ?

  4. Afficher la liste des hôtes joignables sur le réseau.

    Exemple de résultat attendu (sur un réseau 192.168.4.0/29)
    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 !

Dictionnaires

💻 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 link

resistor colors

🎯 Travail à faire :

On vous donne le code partiel du script :

resistor-calculator
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 link 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()

Résultat attendu pour les couleurs spécifiées dans le code partiel fourni :
Resistor value (red|blue|black|brown) = 26 Ω +/-1.00% (25.74 Ω -> 26.26 Ω)

🞄  🞄  🞄