Track
/
Python
Python
/
Esercizi
/
Il prodotto più grande di una serie
Il prodotto più grande di una serie

Il prodotto più grande di una serie

Medio

Introduzione

Lavori per un'agenzia governativa che ha intercettato una serie di segnali di comunicazione criptati provenienti da un gruppo di rapinatori di banche. I segnali contengono una lunga sequenza di cifre. Il tuo team deve usare diverse tecniche di elaborazione digitale dei segnali per analizzarli e individuare eventuali schemi che possano indicare la preparazione di un colpo.

Istruzioni

Il tuo compito è cercare schemi nella lunga sequenza di cifre del segnale cifrato.

La tecnica che userai qui si chiama prodotto massimo tra le serie.

Per prima cosa, definiamo alcuni termini.

  • input: la sequenza di cifre che devi analizzare
  • serie: una sequenza di cifre adiacenti (quelle che stanno una accanto all'altra) contenuta nell'input
  • span: il numero di cifre di ogni serie
  • prodotto: quello che ottieni moltiplicando dei numeri tra loro

Vediamo un esempio con l'input "63915".

  • Per formare una serie, prendi le cifre adiacenti nell'input originale.
  • Se lavori con lo span di 3, ci saranno tre serie possibili:
    • "639"
    • "391"
    • "915"
  • Ora dobbiamo calcolare il prodotto di ogni serie:
    • Il prodotto della serie "639" è 162 (6 × 3 × 9 = 162)
    • Il prodotto della serie "391" è 27 (3 × 9 × 1 = 27)
    • Il prodotto della serie "915" è 45 (9 × 1 × 5 = 45)
  • 162 è maggiore sia di 27 che di 45, quindi il prodotto massimo tra le serie di "63915" proviene dalla serie "639". Quindi la risposta è 162.

Messaggi di eccezione

A volte è necessario sollevare un'eccezione. Quando lo fai, dovresti sempre includere un messaggio di errore significativo per indicare qual è l'origine dell'errore. Questo rende il codice più leggibile e aiuta molto nel debug. Nei casi in cui sai che l'origine dell'errore sarà di un certo tipo, puoi scegliere di sollevare uno dei tipi di errore predefiniti, ma dovresti comunque includere un messaggio significativo.

Questo esercizio in particolare richiede di usare l'istruzione raise per «lanciare» un ValueError quando la funzione largest_product() riceve un input non valido. I test passeranno solo se fai il raise dell'exception e includi un messaggio con essa. Sentiti libero di riutilizzare il codice dell'esercizio series!

Per sollevare un ValueError con un messaggio, scrivi il messaggio come argomento del tipo 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")
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Python Exercism

Vuoi iniziare Il prodotto più grande di una serie?

Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.