Программа взвешивания на python. Определяется функция scales(c, n), которая на вход принимает символ c и целое число n
Скачать 14.84 Kb.
|
Описание: Определяется функция 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') |