Изначально мне нужно было написать код для записи 3 строк во внешний текстовый файл с именем output.txt
. Первая строка показывает минимальный номер первой строки, вторая строка показывает максимальный номер второй строки, а третья строка показывает среднее значение третьей строки. Независимо от того, какие числа введены или длина, он все равно будет показывать все значения мин, макс и среднее. Проблема в том, что код записывает только последнюю среднюю строку в выходной текстовый файл.
Мой лектор хотел бы, чтобы формат остался прежним, но у него были следующие комментарии:
Строки min
и max
не записываются в выходной файл. Это связано с тем, что вы не записываете значения в переменную report_line
, в которой хранится строка для записи в выходной файл.
Попробуйте инициализировать report_line
пустой строкой до начала цикла for.
Затем вы можете использовать оператор +=
и символы новой строки для сохранения вывода в переменной report_line
при каждом повторении для l oop.
Я попробовал их но я все равно получаю тот же результат. Печатается только строка avg.
outfile = open("output.txt", "w")
with open("input.txt") as f:
report_line = ""
for line in f:
operator, data = line.lower().strip().split(":")
line = line.split(":")
operator = line[0].lower().strip()
data = line[1].strip().split(",")
newData = []
for x in data:
report_line+='n'
newData.append(int(x))
if operator == "min":
result = min(newData)
elif operator == "max":
result = max(newData)
elif operator == "avg":
result = sum(newData) / len(newData)
report_line = "The {} of {} is {}.\n".format(operator, newData, result)
outfile.write(report_line)
outfile.close()
Ввод:
min:1,2,3,4,5,6
max:1,2,3,4,5,6
avg:1,2,3,4,5,6
Выход должен быть:
The min of [1, 2, 3, 5, 6] is 1.
The max of [1, 2, 3, 5, 6] is 6.
The avg of [1, 2, 3, 5, 6] is 3.4.