<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Oefeningen
Opgave 1. Schrijf een programma dat het algoritme
uit de slide [Talstelsels (3)](week_02.ipynb#Talstelsels-(3%29) implementeert,
dat wil zeggen, waarmee een getal uit een willekeurig talstelsel
omgezet kan worden naar een tientallige representatie.
Je kunt de index()-functie gebruiken om de decimale waarde van een karakters op te zoeken in een string (zie String indexing (2).
Om de string number van achter naar voren te doorlopen, heb je een Python functie nodig die strings kan omkeren. Probeer die zelf te vinden, met behulp van internet.
Step1:  Opgave 2. Nu je de programma's hebt om de conversie van een willekeurig talstelsel
naar 10-tallig uit te voeren en tevens de conversie van 10-tallig naar een
willekeurig talstelsel, kun je ze samen gebruiken om van het ene
willekeurige talstelsel, zeg $n$, naar het andere willekeurige talstelsel $m$ te converteren
Step2:  Opgave 3. Pas het programma uit opgave 2 aan zodat de gebruiker de beide bases
en het te converteren getal mag opgeven, zoals beschreven
in de slide [Python User Interaction (1)](week_02.ipynb#Python-user-interaction-(1%29)
<ASSISTANT_TASK:>
Python Code:
number = "3DB"
base = 16
result = 0
digits = "0123456789ABCDEF"
power = 0
for digit in reversed(number):
    result += digits.index(digit) * base**power
    power += 1
print("Resultaat: {}".format(tgt_number))
# Van collega Peter kreeg ik een mooie recursieve oplossing
# die ik jullie toch niet wil onthouden.
# In periode 3 gaan we recursieve definities bekijken, 
# maar hier vast een voorproefje.
# Kun je achterhalen waarom dit werkt?
# To understand recursion you gotta understand recursion
def base2dec(number, base):
   digits = "0123456789ABCDEF"
   if number < base:
      return digits[number]
   else:
      return base2dec(number // base, base) + digits[number % base]
print(base2dec(3021, 16))
# To understand recursion you gotta understand recursion
def dec2base(number, base):    
    digits  = "0123456789ABCDEF"
    if len(number) > 0:
        digit = number.pop(0)
        position = digits.index(digit) 
        power = len(number)
        result = position * base**power
        return result + dec2base(number, base)
    else:
        return 0
print(dec2base("BCD", 16))
Explanation: Oefeningen
Opgave 1. Schrijf een programma dat het algoritme
uit de slide [Talstelsels (3)](week_02.ipynb#Talstelsels-(3%29) implementeert,
dat wil zeggen, waarmee een getal uit een willekeurig talstelsel
omgezet kan worden naar een tientallige representatie.
Je kunt de index()-functie gebruiken om de decimale waarde van een karakters op te zoeken in een string (zie String indexing (2).
Om de string number van achter naar voren te doorlopen, heb je een Python functie nodig die strings kan omkeren. Probeer die zelf te vinden, met behulp van internet.
End of explanation
org_base = 8
org_number = "4607"
tgt_base = 16
digits = "0123456789ABCDEF"
## converteer org_number (basis org_base) naar dec_number (10-tallig)
dec_number = 0
power = 0
for digit in reversed(org_number):
    dec_number += digits.index(digit) * org_base**power
    power += 1
## converteer dec_number (10-tallig) naar tgt_number (basis tgt_base)
tgt_number = ""
while dec_number > 0:
    remainder = dec_number % tgt_base
    tgt_number = str(remainder) + tgt_number
    dec_number = dec_number // tgt_base
## druk tgt_number af
print("Resultaat: {}".format(tgt_number))
Explanation: Opgave 2. Nu je de programma's hebt om de conversie van een willekeurig talstelsel
naar 10-tallig uit te voeren en tevens de conversie van 10-tallig naar een
willekeurig talstelsel, kun je ze samen gebruiken om van het ene
willekeurige talstelsel, zeg $n$, naar het andere willekeurige talstelsel $m$ te converteren:
$x_n \rightarrow y_{10} \rightarrow z_m$
Schrijf een programma dat een getal in een opgegeven talstelsel kan
converteren naar een ander opgegeven talstelsel. Je kunt de onderstaande code
gebruiken om je programma te beginnen:
```python
org_base = 8
org_number = "4607"
tgt_base = 16
converteer org_number (basis org_base) naar dec_number (10-tallig),
converteer dec_number (10-tallig) naar tgt_number (basis tgt_base),
druk tgt_number af
```
End of explanation
org_base = int(input("Geef het talstelsel (2..16) voor het originele getal: "))
org_number = input("Geef het originele getal: ")
tgt_base = int(input("Geef het gewenste talstelsel: "))
digits = "0123456789ABCDEF"
## converteer org_number (basis org_base) naar dec_number (10-tallig)
dec_number = 0
power = 0
for digit in reversed(org_number):
    dec_number += digits.index(digit) * org_base**power
    power += 1
## converteer dec_number (10-tallig) naar tgt_number (basis tgt_base)
tgt_number = ""
while dec_number > 0:
    remainder = dec_number % tgt_base
    tgt_number = str(remainder) + tgt_number
    dec_number = dec_number // tgt_base
## druk tgt_number af
print("Resultaat: {}".format(tgt_number))
Explanation: Opgave 3. Pas het programma uit opgave 2 aan zodat de gebruiker de beide bases
en het te converteren getal mag opgeven, zoals beschreven
in de slide [Python User Interaction (1)](week_02.ipynb#Python-user-interaction-(1%29)
End of explanation
<END_TASK>