Parcours
/
Python
Python
/
Exercices
/
Le plus grand produit d'une série
Le plus grand produit d'une série

Le plus grand produit d'une série

Moyen

Introduction

Tu travailles pour une agence gouvernementale qui a intercepté une série de signaux de communication chiffrés émis par un groupe de braqueurs de banque. Ces signaux contiennent une longue séquence de chiffres. Ton équipe doit utiliser différentes techniques de traitement numérique du signal pour analyser ces signaux et repérer d'éventuels motifs qui pourraient indiquer la préparation d'un braquage.

Instructions

Ta tâche consiste à rechercher des motifs dans la longue séquence de chiffres du signal chiffré.

La technique que tu vas utiliser ici s’appelle le plus grand produit de série.

Commençons par définir quelques termes.

  • entrée : la séquence de chiffres que tu dois analyser
  • série : une séquence de chiffres adjacents (ceux qui sont côte à côte) contenue dans l’entrée
  • longueur : le nombre de chiffres que compte chaque série
  • produit : ce que l’on obtient en multipliant des nombres entre eux

Prenons un exemple avec l’entrée "63915".

  • Pour former une série, prends des chiffres adjacents dans l’entrée d’origine.
  • Si tu utilises une longueur de 3, il y aura trois séries possibles :
    • "639"
    • "391"
    • "915"
  • Ensuite, il faut calculer le produit de chaque série :
    • Le produit de la série "639" est 162 (6 × 3 × 9 = 162)
    • Le produit de la série "391" est 27 (3 × 9 × 1 = 27)
    • Le produit de la série "915" est 45 (9 × 1 × 5 = 45)
  • 162 est plus grand que 27 et que 45, donc le plus grand produit de série de "63915" provient de la série "639". La réponse est donc 162.

Messages d'exception

Il est parfois nécessaire de lever une exception. Quand tu le fais, tu dois toujours inclure un message d'erreur explicite pour indiquer l'origine de l'erreur. Cela rend le code plus lisible et facilite grandement le débogage. Dans les cas où tu sais que l'erreur sera d'un type donné, tu peux choisir de lever l'un des types d'erreur intégrés, mais tu dois quand même inclure un message explicite.

Cet exercice demande en particulier que tu utilises l'instruction raise pour « lever » une ValueError lorsque ta fonction largest_product() reçoit une entrée invalide. Les tests ne passeront que si tu lèves l'exception avec raise et que tu y joins un message. N'hésite pas à réutiliser le code de l'exercice series !

Pour lever une ValueError avec un message, écris ce message comme argument du type d'exception :

# span of numbers is longer than number series
raise ValueError("span must not exceed string length")

# span of number is negative
raise ValueError("span must not be negative")

# series includes non-number input
raise ValueError("digits input must only contain digits")
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Python Exercism

Prêt à commencer Le plus grand produit d'une série ?

Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.