Найти - Пользователи
Полная версия: Функция возвращает значение в разном формате
Начало » Python для новичков » Функция возвращает значение в разном формате
1
Marc
Здравствуйте!

Написал функцию конвертации десятичного числа в шестнадцатеричное,
всё работало до конкретно этого числа - “123456”

Функция math_16 возвращает:
 return ''.join(map(str, num_16_final))   
 
print(math_16(123456))
1e+240

Если добавить пробел в “join”:
 return ' '.join(map(str, num_16_final))
print(math_16(123456))
1 E 2 4 0

Подскажите, пожалуйста, почему в первом варианте появляется “e+”?
FishHook
Marc
Подскажите, пожалуйста
А что такое num_16_final это догадаться надо?
Покажите весь код.
Marc
FishHook
 def math_16(a):
    DATABASE = {
        0: 0,
        1: 1,
        2: 2,
        3: 3,
        4: 4,
        5: 5,
        6: 6,
        7: 7,
        8: 8,
        9: 9,
        10: 'A',
        11: 'B',
        12: 'C',
        13: 'D',
        14: 'E',
        15: 'F'
    }
    num_16 = []
    while a >= 15:
        b = int(a) / 16
        c = int(b) * 16
        d = a - int(c)
        num_16 += [d]
        a = int(b)
    num_16 += [a]
    num_rev = []
    for i in reversed(num_16):        
        num_rev +=[i]
    num_16_final = []
    for i in num_rev:
        if i == i:
            num_16_final += [DATABASE[i]]
    return ''.join(map(str, num_16_final))
    
print(math_16(123456))
FishHook
Не понял, лыжи не едут видимо.

asm:/mnt/e$ python2.7 /mnt/d/test/test.py
1E240
asm:/mnt/e$ python3 /mnt/d/test/test.py
1E240
asm:/mnt/e$

нету никаких лишних знаков
Marc
FishHook
нету никаких лишних знаков
Понял, проблема в онлайн IDE.
Спасибо.
Slow
 import string
def itoa( 
    i, 
    base=10, 
    digits=string.digits + string.ascii_uppercase 
): 
    if base < 2 or base > len(digits): 
        raise ValueError(f'base must be in range [2 .. {len(digits)}]') 
    digits_idx = [] 
    while i: 
        i, l = divmod(i, base) 
        digits_idx.append(l) 
    return ''.join(digits[i] for i in reversed(digits_idx))
def math_16(i):
    return itoa(i, 16) 
 >>> math_16(16)
'10'
>>> math_16(100500)
'18894'
>>> int('18894', 16)
100500
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB