← RU Pythoncursus
Uitwerking: Inlever opgave
n = ""
b = ""
while not n.isnumeric():
n = input("Welk getal wil je omzetten?: ")
n = int(n)
while not b.isnumeric():
b = input("Welke basis moet het naartoe?: ")
b = int(b)
# Vind de grootste macht:
k = 0
while b**k <= n:
k += 1
grootste_macht = k - 1
n_origineel = n
nieuw_getal = ""
for macht in range(grootste_macht, -1, -1):
# Bepaal het cijfer dat bij b**macht hoort:
cijfer = n // (b**macht)
# Update n:
n %= b**macht
# Voeg het cijfer toe aan het nieuwe getal:
# (deze if is alleen nodig om b > 9 aan te kunnen, en is niet nodig voor de opdracht)
if cijfer < 10:
nieuw_getal += str(cijfer)
else:
nieuw_getal += chr(cijfer + 55)
print(f"Het getal {n_origineel} in basis {b} is {nieuw_getal}")
# Efficientere oplossing (kan je uitvinden waarom dit werkt?)
nieuw_getal = ""
n = n_origineel
while n > 0:
cijfer = n % b
if cijfer < 10:
nieuw_getal = str(cijfer) + nieuw_getal
else:
nieuw_getal = chr(cijfer + 55) + nieuw_getal
n = n // b
print(f"Met andere aanpak: {nieuw_getal}")