I was very pleased to learn the "enumerate()" function - thanks Blackjack for this!

I have now used this in my "to-denary" function and I think it is a lot better that my previous version.

I know this program could really do with some checking of input /error handling, but I am quite pleased with how it works so far ...

Code: Select all

```
# bases.py - converts a base to another base.
import math
def to_denary(n, b, D):
"""Converts to denary."""
denary = 0
for i in enumerate(reversed(n)):
temp = D.index(i[1])
denary += temp * math.pow(b, i[0])
return denary
def to_base(n, b, D):
"""Converts n to base b."""
result = ""
while n != 0:
temp = int(n % b)
n //= b
result = D[temp] + result
return result
def main():
DIGITS = "0123456789ABCDEF"
print("**** Base conversion ***")
base_a = input("Base of input:" )
while base_a != "":
base_a = int(base_a)
base_b = int(input("Base for output: "))
num = input("Number: ")
ans = to_base((to_denary(num, base_a, DIGITS)), base_b, DIGITS)
print("The base", base_a, "number", num, "in base", base_b, "is", ans)
base_a = input("Base of input:" )
# call main
main()
```

Here's a sample run: