1270 - B16

De la Universitas MediaWiki

Cerinţa

Se dă un număr natural în baza 16. Să se transforme acest număr în baza 10.

Date de intrare

Programul citește de la tastatură numărul n în baza 16.

Date de ieşire

Programul va afișa pe ecran numărul n transformat în baza 10.

Restricții și precizări

  • reprezentarea în baza 10 a numărului dat este mai mică decât 2.000.000.000
  • Cifrele în baza 16 sunt : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Exemplul 1

Intrare
100
Ieșire
Datele introduse corespund restricțiilor impuse.
256


Exemplul 2

Intrare
200000000
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Rezolvare

# 1270  B16
def verificare(n_hex):
    try:
        # Încercăm să convertim numărul în baza 10
        n_dec = int(n_hex, 16)
        # Verificăm dacă numărul este în intervalul [0, 2000000000]
        if 0 <= n_dec <= 2000000000:
            # Dacă numărul este valid, îl returnăm
            return n_hex
        else:
            # Dacă numărul nu este valid, ridicăm o excepție
            raise ValueError
    except ValueError:
        # Dacă conversia a eșuat, ridicăm o excepție
        raise ValueError


# Funcția transformare convertește numărul din baza 16 în baza 10
def transformare(numar_hex):
    return int(numar_hex, 16)


if __name__ == "__main__":
    try:
        # Citim numărul de la utilizator
        n = input("Introduceti numarul in baza 16: ")
        # Validăm numărul
        n = verificare(n)
        # Dacă numărul este valid, îl convertim în baza 10 și afișăm rezultatul
        print("Datele introduse corespund restricțiilor impuse.")
        print(transformare(n))
    except ValueError:
        # Dacă numărul nu este valid, afișăm un mesaj de eroare
        print("Datele introduse nu corespund restricțiilor impuse.")