これも
>>> int('0b11010', 2)
26
>>> int('0x1A', 16)
26
のようにint関数で計算してくれるのですが、
これもコードで書きます。
import sys
import re
args = sys.argv
def aby2dec(target, m):
    n = len(target) - 1
    sum = 0
    for i in range(len(target)):
        alpha_search_result = re.search('[A-F]', target[i])
        if alpha_search_result:
            num = ord(alpha_search_result.group()) - 55
        else:
            num = int(target[i])
        sum += (m ** n) * num
        n -= 1
    return sum
print(aby2dec(args[1], int(args[2])))
サンプルコードでは[A-F]をif文でベタ書きしていたのですが、
ここでは正規表現とASCIIコードで取得するようにしました。
演算子**で階乗計算できるんですね。
