with open('datain.txt', 'r', encoding='utf-8') as infile, open('dataout.txt', 'w', encoding='utf-8') as outfile:
temp_2d_list = []
for line in infile:
temp_line_list = line.strip().split(';')[1:] # строка списка без первого элемента (имени)
temp_2d_list.append(temp_line_list) # тут заполняю двумерный список
sum_row = 0
average = 0
# вычисление средней оценки предметов студента
for row in range(len(temp_2d_list)):
for col in range(len(temp_2d_list[row])):
sum_row += int(temp_2d_list[row][col])
print(temp_2d_list[row][col], end=' ')
average = sum_row / len(temp_2d_list[row])
sum_row = 0
print()
outfile.write(str(average) + '\n')
# --------> Тут не удается. Не вычисляется средняя оценка каждого предмета по всем ученикам
# Хочу сделать общий случай, при разном кол-ве учеников и разном кол-ве предметов
# вычисление средней оценки каждого предмета всех учеников
for col in range(len(temp_2d_list[row])):
for row in range(len(temp_2d_list)):
sum_row += float(temp_2d_list[row][col])
#print(sum_row, end='')
average = sum_row / len(temp_2d_list[row])
sum_row = 0
print(str(average), end=' ')
outfile.write(str(average) + ' ')
# вычисление средней оценки каждого предмета всех учеников
count_students = len(temp_2d_list)
count_school_subjects = len(temp_2d_list[0])
for col in range(count_school_subjects):
for row in range(count_students):
sum_row += float(temp_2d_list[row][col])
average = sum_row / len(temp_2d_list)
sum_row = 0
print(str(average), end=' ')
outfile.write(str(average) + ' ')
# Ваш файл
file = """
Петров;85;92;78
Сидоров;100;88;94
Иванов;58;72;85
""".strip().split('\n')
# преобразуем в данные
data = {v[0]: list(map(float, v[1:])) for v in (s.split(';') for s in file)}
print(data)
# разворачиваем ваш список и считаем
avg = {i: f'sum({l})/{len(l)} = {sum(l) / len(l)}' for i, l in enumerate(zip(*data.values()))}
print(avg)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import sys
def main():
summ_s_row_now = int(0)
line_iters = int(0)
row_iters = int(0)
str_res_line = str()
int_tpl_data = dict()
with open('in.csv', 'r', encoding='utf-8') as infile, open('out.csv', 'w', encoding='utf-8') as outfile:
for row_now in infile:
str_res_line = str(row_now.split(";")[0])
for i,s_row_now in enumerate(row_now.split(";")[1:]):
if int_tpl_data.get(i):
int_tpl_data[i] += int(s_row_now)
else:
int_tpl_data[i] = int(s_row_now)
summ_s_row_now += int(s_row_now)
str_res_line += str(f""", {s_row_now}""").replace("\n", "")
line_iters += 1
int_tpl_data[line_iters + 1] = round(summ_s_row_now/line_iters,2)
str_to_file = str(f"""{str_res_line}, {int_tpl_data[line_iters + 1]}\n""")
outfile.write(str_to_file)
print(str_to_file)
summ_s_row_now = 0
line_iters = 0
row_iters += 1
outfile.write(f"""SUMM/{row_iters}""")
print(f"""SUMM/{row_iters}""", end = "")
for e,i in enumerate(int_tpl_data,1):
if e == len(int_tpl_data):
continue
str_to_file = str(f""", {round(int_tpl_data[i]/row_iters,2)} """)
outfile.write(str_to_file)
print(str_to_file, end = "")
print()
if __name__ == "__main__":
sys.exit(main())