Track
/
Python
Python
/
Esercizi
/
All Your Base
All Your Base

All Your Base

Medio

Introduzione

Sei appena stato assunto come professore di matematica. La prima settimana è andata bene, ma nella seconda c'è qualcosa che non va. Il problema è che tutte le risposte dei tuoi studenti sono sbagliate! Per fortuna, le tue competenze matematiche ti hanno permesso di individuare il problema: le risposte degli studenti sono corrette, ma sono tutte in base 2 (binario)! Sorprendentemente, si scopre che ogni settimana gli studenti usano una base diversa. Per aiutarti a verificare rapidamente le risposte degli studenti, costruirai uno strumento per convertire tra basi diverse.

Istruzioni

Converti una sequenza di cifre in una base, che rappresenta un numero, in una sequenza di cifre in un'altra base, che rappresenta lo stesso numero.

Note

Prova a implementare la conversione per conto tuo. Non usare qualcos'altro che esegua la conversione al posto tuo.

A proposito della notazione posizionale

Nella notazione posizionale, un numero in base b può essere visto come una combinazione lineare di potenze di b.

Il numero 42, in base 10, significa:

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

Il numero 101010, in base 2, significa:

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

Il numero 1120, in base 3, significa:

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

Sì. Quei tre numeri qui sopra sono esattamente lo stesso numero. Complimenti!

Messaggi delle eccezioni

A volte è necessario sollevare un'eccezione. Quando lo fai, dovresti sempre includere un messaggio di errore significativo per indicare quale sia l'origine dell'errore. Questo rende il codice più leggibile ed aiuta notevolmente il 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 che tu usi la istruzione raise per «lanciare» un ValueError per diverse basi di input e di output. I test passeranno solo se usi raise per l'exception e ci alleghi un messaggio significativo.

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

Vuoi iniziare All Your Base?

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