Может ли кто-нибудь, пожалуйста, помочь с правильным способом или есть мнение по этому поводу. Я написал код ниже, который должен принимать входные данные из текстового файла, расположить одну строку в порядке и указать состояние, которое является минимальным числом, затем то же самое на следующей строке для максимального числа и, наконец, для среднего числа всех чисел.
Мой код:
from statistics import mean
def number1():
with open('input.txt') as file:
data = {line.split(':')[0]: sorted([int(value) for value in line.split(':')[1].split(',')]) for line in file.readlines()}
functions = {'min': min, 'max': max, 'avg': mean}
with open('output.txt', 'w') as file:
file.writelines(f"The {function} of {values} is {functions[function](values)}\n" for function, values in data.items())
number1()
Мне сказали, что это неправильно. Ниже приведен код, который мне следует использовать, но после очистки отступа, который я считаю правильным. Я получаю только вывод средней линии.
Предлагаемый код:
outfile = open("output.txt", "w")
with open("input.txt") as f:
for line in f:
# clean line and split into operator and data
operator, data = line.lower().strip().split(":")
line = line.split(":")
operator = line[0].lower().strip()
data = line[1].strip().split(",")
# parse data into list of integers
# data = [int(x) for x in data.split(",")]
# convert numbers in list to integer
newData = []
for x in data:
newData.append(int(x))
# min(), max(), sum(), len()
# determine operation to perform on number list variable
if operator == "min":
result = min(newData)
elif operator == "max":
result = max(newData)
elif operator == "avg":
result = sum(newData) / len(newData)
# create output string
report_line = "The {} of {} is {}.\n".format(operator, newData, result)
outfile.write(report_line)
outfile.close()