Python
Фёдор решил познакомить сестру с удивительными свойствами цифр и рассказать ей о системах счисления.
Он написал функцию, которая показывает, как будет выглядеть развернутая запись числа в позиционной системе счисления.
Аргументы функции: число - основание системы счисления (основание системы счисления - 2 <= var_name <= 10) и неограниченное количество цифр числа по порядку убывания степеней.
Функция num_form(var_name, *coeffs) возвращает в виде текста развернутую форму числа.
Пример
Ввод
2 1 0 0 1 1 0
Вывод
1*2^5 + 0*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0
Примечания
Функция должна обязательно называться num_form.
Ваше решение должно содержать только функции.
В решении не должно быть вызовов требуемых функций
Код ниже не подходит, может у кого-нибудь есть мысли?
def num_form(var_name, *coeffs):
s =''
for i in range(len(coeffs)):
s += f'{coeffs[i]}' + '*' + f'{var_name}' + '^' + f'{len(coeffs)-1-i}' + '+'
return s[:-11]
Ответы
Ответ:
def num_form(var_name, *coeffs):
# определяем степень, до которой нужно развернуть число
max_power = len(coeffs) - 1
# создаем список, содержащий каждый слагаемый в форме a * b^c
terms = []
for i in range(len(coeffs)):
if coeffs[i] != 0:
term = "{}*{}^{}".format(coeffs[i], var_name, max_power - i)
terms.append(term)
# объединяем все слагаемые в строку с плюсами и пробелами между ними
output = " + ".join(terms)
return output
Объяснение:
Функция принимает первым аргументом основание системы счисления и произвольное количество коэффициентов, которые будут использоваться для развертывания числа. Внутри функции мы сначала определяем максимальную степень числа, до которой нужно развернуть. Затем мы создаем список слагаемых, которые будут входить в развернутую форму числа. Мы проходим по каждому коэффициенту, и если коэффициент не равен нулю, добавляем слагаемое в список. В каждом слагаемом мы используем форму a * b^c, где a - коэффициент, b - основание системы счисления, а c - степень. Затем мы объединяем все слагаемые в строку с помощью метода join(), используя "+" как разделитель.
Пример использования:
print(num_form(2, 1, 0, 0, 1, 1, 0))
# Output: 1*2^5 + 0*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0