Основа Python 36 кодирования

Наследование очень мощно, но Вы не можете вызвать его (см.: проблема кругового эллипса ). Если Вы действительно не можете быть абсолютно уверены в истинном, "-" отношения подтипа, то лучше идти с составом.

32
задан Chris 2 May 2012 в 17:09
поделиться

2 ответа

Вы пробовали пример кода Википедии?

def base36encode(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
    """Converts an integer to a base36 string."""
    if not isinstance(number, (int, long)):
        raise TypeError('number must be an integer')

    base36 = ''
    sign = ''

    if number < 0:
        sign = '-'
        number = -number

    if 0 <= number < len(alphabet):
        return sign + alphabet[number]

    while number != 0:
        number, i = divmod(number, len(alphabet))
        base36 = alphabet[i] + base36

    return sign + base36

def base36decode(number):
    return int(number, 36)

print base36encode(1412823931503067241)
print base36decode('AQF8AA0006EH')
36
ответ дан 27 November 2019 в 19:46
поделиться

Мне жаль, что я не читал это раньше. Вот ответ:

def base36encode(number):
    if not isinstance(number, (int, long)):
        raise TypeError('number must be an integer')
    if number < 0:
        raise ValueError('number must be positive')

    alphabet, base36 = ['0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '']

    while number:
        number, i = divmod(number, 36)
        base36 = alphabet[i] + base36

    return base36 or alphabet[0]


def base36decode(number):
    return int(number, 36)

print(base36encode(1412823931503067241))
print(base36decode('AQF8AA0006EH'))
31
ответ дан 27 November 2019 в 19:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: