Форум сайта python.su
Необходимо работать функцию 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Сорри, а можешь код про куоментировать???
а поискать??
Офлайн
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
Офлайн
При такой проверки convert_n_to_m(-123.0, 11, 16), выходит такое сообщение:
Офлайн
ну так и должно быть
вы его запустите и все будет хорошо
P.S. удалить vs и установите sublime
Офлайн
terabaytPyCharm
P.S. удалить vs и установите sublime
Офлайн