Найти - Пользователи
Полная версия: Функция конвектирования
Начало » Центр помощи » Функция конвектирования
1
Xryst
Необходимо работать функцию convert_n_to_m(x, n, m),
которая принимает 3 аргумента – целое число (в системе счисления с основанием n) или строку x, которая представляет такое число, и целые числа n и m (1 <= n, m <= 36),
и возвращает строку – представление числа х в системе счисления m.

В случае, если аргумент х не является числом или строкой, или не может быть представлением неотъемлемого целого числа в системе счисления с основанием n, вернуть логическую константу False.

В системах счисления с основанием больше десяти для обозначения разрядов со значением больше 9 использовать буквы латинского алфавита в верхнем регистре от A до Z.

Считать, что в единичной системе счисления число записывается соответствующим количеством нулей.

Например
Вызов функции: convert_n_to_m(, 4, 3)
Возвращает: False
Вызов функции: convert_n_to_m(“0123”, 5, 6)
Возвращает: 102
Вызов функции: convert_n_to_m(“123”, 3, 5)
Возвращает: False
Вызов функции: convert_n_to_m(123, 4, 1)
Возвращает: 000000000000000000000000000
Вызов функции: convert_n_to_m(-123.0, 11, 16)
Возвращает: False
Вызов функции: convert_n_to_m(“A1Z”, 36, 16)
Возвращает: 32E7
terabayt
а поискать??
Xryst
terabayt
а поискать??
Сорри, а можешь код про куоментировать???
terabayt
def convert_n_to_m(n, a, b): # создаем функцию
    A = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' # алфавит
    try: # блок где перехватываются исключения
        if a == 1: # если исходная система счисления равна 1
            n, a = len(n), 10 # в n записываем количество символов и изменяем исходныую систему счисления на 10
        num, new_num_string = int(str(n), a), '' # в num записываем строку в десятичной системе счисления, в new_num_string пустую строку
        assert n >= 0 # если n меньше нуля вызываем исключение
    except: # блок обработки исключения
        return False # возвращаем False
    if b == 1: # если вторая система равна еденице
        return '0' * num # возвращаем num раз 0
    while num: # будет выполнятся пока num не равен нулю
        new_num_string = A[num % b] + new_num_string # в начало new_num_string записывем символ с алфавита А по индексу num % b
        num /= b #  num делим на систему счисления
    return new_num_string if new_num_string else 0 # если new_num_string не пустая строка возвращаем ее, если пустая - возвращаем 0
Xryst
При такой проверки convert_n_to_m(-123.0, 11, 16), выходит такое сообщение:

terabayt
ну так и должно быть
вы его запустите и все будет хорошо
P.S. удалить vs и установите sublime
psycoz
terabayt
P.S. удалить vs и установите sublime
PyCharm все таки там другой уровень CodeIntel даже в сравнении с Sublime + Anaconda
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