Trilhas
/
Python
Python
/
Exercícios
/
All Your Base
All Your Base

All Your Base

Médio

Introdução

Você acaba de ser contratado como professor de matemática. Sua primeira semana correu bem, mas tem algo errado na segunda semana. O problema é que todas as respostas dos seus alunos estão erradas! Por sorte, seus conhecimentos de matemática permitiram que você identificasse o problema: as respostas dos alunos estão certas, mas todas estão na base 2 (binária)! Incrivelmente, a cada semana os alunos usam uma base diferente. Para ajudar você a verificar rapidamente as respostas dos alunos, você vai construir uma ferramenta para converter entre bases.

Instruções

Converta uma sequência de dígitos em uma base, que representa um número, em uma sequência de dígitos em outra base, que representa o mesmo número.

Note

Tente implementar a conversão por conta própria. Não use outra coisa para fazer a conversão no seu lugar.

Sobre a notação posicional

Na notação posicional, um número na base b pode ser entendido como uma combinação linear de potências de b.

O número 42, na base 10, significa:

(4 × 10¹) + (2 × 10⁰)

O número 101010, na base 2, significa:

(1 × 2⁵) + (0 × 2⁴) + (1 × 2³) + (0 × 2²) + (1 × 2¹) + (0 × 2⁰)

O número 1120, na base 3, significa:

(1 × 3³) + (1 × 3²) + (2 × 3¹) + (0 × 3⁰)

Sim. Esses três números acima são exatamente o mesmo. Parabéns!

Mensagens de exceção

Às vezes é preciso lançar uma exceção. Quando você faz isso, deve sempre incluir uma mensagem de erro significativa para indicar qual é a origem do erro. Isso deixa seu código mais legível e ajuda muito no debug. Em situações em que você sabe que a origem do erro será de um determinado tipo, você pode optar por lançar um dos tipos de erro embutidos, mas ainda deve incluir uma mensagem significativa.

Este exercício específico exige que você use a instrução raise para "lançar" um ValueError quando as bases de entrada e de saída forem diferentes. Os testes só vão passar se você fizer o raise da exception e incluir uma mensagem significativa junto dela.

Para lançar um ValueError com uma mensagem, escreva a mensagem como argumento para o tipo exception:

# for input.
raise ValueError("input base must be >= 2")

# another example for input.
raise ValueError("all digits must satisfy 0 <= d < input base")

# or, for output.
raise ValueError("output base must be >= 2")
Editar via GitHub O link abre em uma nova janela ou aba
Python Exercism

Tudo pronto para começar All Your Base?

Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.