Файл: Определяется функция scales(c, n), которая на вход принимает символ c и целое число n.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.12.2023
Просмотров: 15
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Описание:
Определяется функция scales(c, n), которая на вход принимает символ c и целое число n.
Далее, создаются переменные k, one и two со значениями 1, [] и [].
Затем идет цикл while, который будет выполняться пока n не станет равным 0.
На каждой итерации цикла происходит деление n на 3 с остатком.
Если остаток равен 1, то в зависимости от значения c в список two или one добавляется значение k.
Если остаток равен 2, то в зависимости от значения c в список one или two добавляется значение k, и к n добавляется 1.
Значение k умножается на 3 на каждой итерации цикла.
Функция возвращает строку с числами из списка one и строку с числами из списка two.
Далее, с помощью функции open открывается файл "input.txt" для чтения данных и файл "output.txt" для записи.
Затем происходит цикл for, который перебирает каждую строку из файла "input.txt".
Строка разделяется на две переменные c и n, затем переменная n преобразуется в целое число.
Далее, вызывается функция scales(c, n) и значения l и r присваиваются строкам, возвращаемым функцией.
Затем с помощью метода write значения l и r записываются в файл "output.txt".
Примечание:
-
Данная программа может записать результат как для одной, так и для нескольких строк, написанных в файле "input.txt". -
Если Вам требуется сохранение результатов прошлых вычислений в файле "output.txt", Вам следует в 17-ой строке программы изменить с “w” на “a” атрибут открываемого для записи файла "output.txt".
Код:
def scales(c, n):
k = 1
one, two = [], []
while n:
i, n = n % 3, n // 3
if i == 1:
(two if c == 'L' else one).append(k)
elif i == 2:
if c == 'L':
one.append(k)
n += 1
else:
two.append(k)
n += 1
k *= 3
return f'L:{" ".join(map(str, one))}', f'R:{" ".join(map(str, two))}'
with open('input.txt') as inf, open('output.txt', 'w') as outf:
for line in inf:
c, n = line.split()
n = int(n)
l, r = scales(c, n)
outf.write(f'{l}\n{r}\n')