Как правильно работать с внешними текстовыми файлами - PullRequest
0 голосов
/ 05 февраля 2020

Может ли кто-нибудь, пожалуйста, помочь с правильным способом или есть мнение по этому поводу. Я написал код ниже, который должен принимать входные данные из текстового файла, расположить одну строку в порядке и указать состояние, которое является минимальным числом, затем то же самое на следующей строке для максимального числа и, наконец, для среднего числа всех чисел.

Мой код:

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()        

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете использовать ниже logi c.

Скажите, что ваш текстовый файл - data.txt с содержанием ниже

3 7 5 
0 4 2 
8 1 6 

2 6 3 
1 0 8 
5 4 7 

4 1 6 
0 8 7 
2 3 5 

7 2 6 
4 1 3 
8 0 5 

Используйте приведенный ниже код, чтобы вставить все числа в список и найти мин. и макс.

list = []
file = open('data.txt', 'r')
for line in file.readlines():
    for n in line:
        if (n!=" " and  n!="\n"):
            list.append(n)
print(list)
print(min(list),max(list))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...