возвращая среднее значение файла, просто используя def - PullRequest
0 голосов
/ 12 марта 2020

Как я могу записать в новый файл (n) с помощью функции def? Я имею в виду, как я могу вернуть функцию?

import csv
from statistics import mean
def calculate_averages(input_file_name,output_file_name):
with open(input_file_name) as f:
    with open(output_file_name, "w") as n:
        reader=csv.reader(f)
        for i in reader:
            name=i[0]
            l1=list()
            for index in i[1:]:
                l1.append(int(index))
            n.write(str(name)+','+str(mean(l1))+'\n')
        f.close()
        n.close()

Файл CSV:

sepehr,19,17,20,14,19
taham,13,17,16,15,15,14,18
salar,14,19,6,12,15,12,19
mahsa,13,19,18,19,20,20,17,11

1 Ответ

0 голосов
/ 12 марта 2020

Глядя на ваш пример кода, кажется, что вы неправильно вызываете свою функцию. Вероятно, поэтому вы не видите никаких результатов. Непонятно, что именно вы пытаетесь выполнить sh, но вы, вероятно, хотите что-то более похожее на это:

import csv
from statistics import mean

def calculate_averages(input_file_name, output_file_name):

    with open(input_file_name) as f:

        reader = csv.reader(f)

        for i in reader:
            to_print_1 = i[0]
            l1 = list()
            for val in i[1:]:
                l1.append(int(val))
            to_print_2 = str(mean(l1))
            s = str(to_print_1) + ',' + to_print_2
            print(s) 

calculate_averages(input_file_name, output_file_name)

Я предполагаю, что input_file_name и output_file_name определены в вашей программе ранее и передаются в функцию calc_averages в виде строк, например "somefile.csv" или "outfile.txt".

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

...