Série

Série

Fácil

Instruções

Dada uma string de algarismos, produz todas as substrings contíguas de comprimento n dessa string, pela ordem em que aparecem.

Por exemplo, a string "49142" tem as seguintes séries de 3 algarismos:

  • "491"
  • "914"
  • "142"

E as seguintes séries de 4 algarismos:

  • "4914"
  • "9142"

E se pedires uma série de 6 algarismos a uma string de 5 algarismos, mereces tudo o que te acontecer.

Repara que estas séries só têm de ocupar posições adjacentes na string de entrada; os algarismos não precisam de ser numericamente consecutivos.

Mensagens de exceção

Por vezes é necessário lançar uma exceção. Quando o fazes, deves incluir sempre uma mensagem de erro significativa para indicar qual é a origem do erro. Isto torna o teu código mais legível e ajuda imenso na depuração. Em situações em que sabes que a origem do erro é de um determinado tipo, podes optar por lançar um dos tipos de erro incorporados, mas mesmo assim deves incluir uma mensagem significativa.

Neste exercício em particular, tens de usar a instrução raise para "lançar" um ValueError se os parâmetros series e/ou length passados à função slice() estiverem vazios ou fora do intervalo. Os testes só passam se fizeres raise da exception e incluíres uma mensagem com ela.

Para lançar um ValueError com uma mensagem, escreve a mensagem como argumento do tipo exception:

# if the slice length is zero.
raise ValueError("slice length cannot be zero")

# if the slice length is negative.
raise ValueError("slice length cannot be negative")

# if the series provided is empty.
raise ValueError("series cannot be empty")

# if the slice length is longer than the series.
raise ValueError("slice length cannot be greater than series length")
Editar via GitHub A ligação abre numa nova janela ou separador
Python Exercism

Estás pronto para começar Série?

Inscreve-te no Exercism para aprenderes e dominares Python com 17 conceitos146 exercícios, e mentoria humana real, tudo grátis.