Главная страница

Программа взвешивания на python. Определяется функция scales(c, n), которая на вход принимает символ c и целое число n


Скачать 14.84 Kb.
НазваниеОпределяется функция scales(c, n), которая на вход принимает символ c и целое число n
АнкорПрограмма взвешивания на python
Дата25.04.2023
Размер14.84 Kb.
Формат файлаdocx
Имя файлаscales.docx
ТипДокументы
#1087787

Описание:

Определяется функция 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".
Примечание:

  1. Данная программа может записать результат как для одной, так и для нескольких строк, написанных в файле "input.txt".

  2. Если Вам требуется сохранение результатов прошлых вычислений в файле "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')


написать администратору сайта