47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import prettytable
|
||
|
||
tables = {}
|
||
active_table_id = 0
|
||
r = 3
|
||
|
||
def avg(a):
|
||
return sum(a) / len(a)
|
||
|
||
with open("sample_data.txt") as f:
|
||
for l in f:
|
||
if l.rstrip("\n\r") == '':
|
||
continue
|
||
|
||
if l[0] == "#":
|
||
sl = l[1:].split()
|
||
|
||
if len(sl) == 2:
|
||
if sl[0] == "table":
|
||
new_id = int(sl[1])
|
||
tables[new_id] = {"s": [], "C": 0.0}
|
||
active_table_id = new_id
|
||
|
||
elif sl[0] == "C":
|
||
tables[active_table_id]["C"] = float(sl[1])
|
||
|
||
else:
|
||
tables[active_table_id]['s'].append(list(map(float, l.split())))
|
||
|
||
ti = list(tables.items())
|
||
ti.sort(key = lambda x: x[0])
|
||
|
||
for i, t in ti:
|
||
print(f"Table {i}")
|
||
|
||
s = t['s']
|
||
c = t['C']
|
||
|
||
avg_n = [avg(a) for a in zip(*s)]
|
||
print("❬n❭ : " + ", ".join(list(map(lambda x: str(round(x, r)), avg_n))))
|
||
|
||
avg_Cix_U = [c * avg_n[2*a] / avg_n[2*a+1] for a in range(2)]
|
||
print("❬Cix(Ui)❭ : " + ", ".join(list(map(lambda x: str(round(x, r)), avg_Cix_U))))
|
||
|
||
avg_Cix_final = avg(avg_Cix_U)
|
||
print(f"Результат для ❬Сix❭: {avg_Cix_final}\n")
|