Уведомления

Группа в Telegram: @pythonsu

#1 Март 11, 2015 16:21:11

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция конвектирования

Необходимо работать функцию 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

Офлайн

#2 Март 11, 2015 17:19:12

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Функция конвектирования

а поискать??



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Март 11, 2015 17:57:51

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция конвектирования

terabayt
а поискать??
Сорри, а можешь код про куоментировать???

Офлайн

#4 Март 11, 2015 18:04:47

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Функция конвектирования

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



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Март 11, 2015 19:42:53

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция конвектирования

При такой проверки convert_n_to_m(-123.0, 11, 16), выходит такое сообщение:

Офлайн

#6 Март 11, 2015 20:32:19

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Функция конвектирования

ну так и должно быть
вы его запустите и все будет хорошо
P.S. удалить vs и установите sublime



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Март 13, 2015 18:31:59

psycoz
Зарегистрирован: 2015-02-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция конвектирования

terabayt
P.S. удалить vs и установите sublime
PyCharm все таки там другой уровень CodeIntel даже в сравнении с Sublime + Anaconda

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version