python各种进制求值

来源:互联网 发布:vue.js修改data 编辑:程序博客网 时间:2024/05/18 17:57
def checkio(str_number, radix):    str_int = dict(map(lambda x,y:(y, x), [ i for i in range(10, 36) ], [ chr(i)  for i in range(97, 123) ]))    int_int = dict(map(lambda x,y:(str(x),y), [ i for i in  range(10) ], [ i for i in range(10) ]))    sum = 0    times = 0    for i in reversed(str_number):        v = int_int.get(i, None)        if v == None:            v = str_int.get(i.lower(), None)        if v >= radix:            return -1        else:            sum += v if times == 0 else v*radix**times        times += 1    return sum#These "asserts" using only for self-checking and not necessary for auto-testingif __name__ == '__main__':    assert checkio("AF", 16) == 175, "Hex"    assert checkio("101", 2) == 5, "Bin"    assert checkio("101", 5) == 26, "5 base"    assert checkio("Z", 36) == 35, "Z base"    assert checkio("AB", 10) == -1, "B > A = 10"    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")
原创粉丝点击