Я новичок в Python. Чтобы практиковать это, я делаю упражнения из аббатства Код. Они часто представляют свои входные данные в виде столбцов чисел. В приведенном ниже примере я должен был вычислить сумму первых членов арифметической последовательности. Входные данные были представлены в трех столбцах:
25 12 77
27 14 95
8 0 30
...
где число в первом столбце было отправной точкой последовательности, число во втором столбце было значением приращения, а число в последнем столбце показывало количество значений, которые должны были быть суммированы.
Поскольку эти списки с входными данными часто бывают довольно длинными, я не хочу, чтобы они были жестко закодированы в скрипте. Поэтому я скопировал, вставил и сохранил их в виде простого текстового файла.
Прежде чем я смог приступить к самому упражнению, мне пришлось пройти четыре цикла «for», чтобы преобразовать исходный текстовый файл в работающий формат (переход от строк к целым числам). Кроме того, мне пришлось создать несколько списков, в которые я добавляю последующие результаты.
После первого цикла for я получил список строк: ['25 12 77 ’, ’27 14 95’,….]
После второго цикла «for» я получил список списков строк [['25', '12', '77'], ['27', '14', '95']…]
После третьего и четвертого (вложенного) цикла «for» я наконец получил список целых чисел [25, 12, 77, 27, 14, 95…]
with open("input_progression.txt") as file:
for line in file:
line = line.strip()
lines.append(line)
for strings in lines:
strings = strings.split(' ')
g.append(strings)
for sublist in g:
for item in sublist:
flat_list.append(item)
flat_list = list(map(int, flat_list))
for numbers in range(int(len(flat_list) / 3)):
for integer in range(0, flat_list[counter + 2]):
result += (flat_list[counter] + flat_list[counter + 1] * integer)
outcome.append(result)
counter += 3
result = 0
print (outcome)
Это была довольно утомительная работа (все эти вещи были новыми для меня). Вы знаете какой-нибудь более простой (или, возможно, Pythonian) способ, как это сделать? Есть ли где-нибудь учебник, как использовать текстовые файлы в качестве ввода?