From ef1a8a155a5f85c6227ab382dbed52b61313b0b3 Mon Sep 17 00:00:00 2001 From: dymik739 Date: Sat, 25 Feb 2023 23:11:14 +0200 Subject: [PATCH] initial commit --- main.py | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ sample_data.txt | 17 ++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 main.py create mode 100644 sample_data.txt diff --git a/main.py b/main.py new file mode 100644 index 0000000..06a6a1a --- /dev/null +++ b/main.py @@ -0,0 +1,71 @@ +import os, sys + +def avg(a): + return sum(a) / len(a) + +def process_table(file): + table = [["L2", "L1", "t2", "m", "Δm", "t2i", "v1", "(v1)^2", "a", "ai", "❬a❭", "A", "B"]] + supported_args = ["r"] + config = {"r": 2} + r = config["r"] + with open(file, "r", encoding = "UTF-8") as f: + for i in f: + if i.rstrip("\r\n") != "": + if i.rstrip("\r\n")[0] == "#" or i.rstrip("\r\n")[0] == ";": + print(f"Special line: {i}") + try: + cline = i.rstrip("\r\n")[1:].split() + if len(cline) == 2 and cline[0] in supported_args: + config[cline[0]] = int(cline[1]) + except: + pass + else: + print(f"Table line: {i}") + table.append(list(map(lambda x: float(x), i.rstrip("\r\n").replace(",", ".").split()))) + + for i in table[1:]: + # first table + i.append(round(i[0] / i[2], r)) + i.append(round(i[6]**2, r)) + i.append(round((i[0]**2)/(2*(i[2]**2)*i[1]), r)) + + # precalculations + preset_L2 = table[1][0] + preset_L1 = table[1][1] + + preset_ai = [(preset_L2**2) / (2 * (avg(list(zip(*table[1:][i:i+3]))[5])**2) * preset_L1) for i in range(0, 12, 3)] + for i in range(4): + for k in range(3): + table[1 + i*3 + k].append(round(preset_ai[i], r)) + + preset_avg_a = [(preset_L2**2) / (2 * (avg(list(zip(*table[1:][i:i+3]))[9])**2) * preset_L1) for i in range(0, 12, 3)] + for i in range(4): + for k in range(3): + table[1 + i*3 + k].append(round(preset_avg_a[i], r)) + + for i in table[1:]: + i.append(round(i[4]/(2*i[3]), r)) + i.append(round(i[10]/(9.81-i[10]), r)) + + w = max([max(list(map(lambda x: len(str(x)), i))) for i in table]) + print("\n".join([" | ".join(list(map(lambda x: str(x).center(w), i))) for i in table])) + +''' +if len(sys.argv) == 2 and os.path.exists(sys.argv[1]): + if os.path.isdir(sys.argv[1]): + for i in os.listdir(sys.argv[1]): + process_table(sys.argv[1] + i) + else: + process_table(sys.argv[1]) + +elif os.path.exists("input_tables/") and os.path.isdir("input_tables/"): + for i in os.listdir("input_tables/"): + process_table("input_tables/" + i) +else: + print("Не знайдено жодного файлу для обробки") +''' + +if len(sys.argv) == 2 and os.path.exists(sys.argv[1]): + process_table(sys.argv[1]) +else: + print("Будь ласка, вкажіть файл для обробки") diff --git a/sample_data.txt b/sample_data.txt new file mode 100644 index 0000000..1462245 --- /dev/null +++ b/sample_data.txt @@ -0,0 +1,17 @@ +# r 7 + +20 0,227 0,269 49 20,2 0,275 +20 0,227 0,265 49 20,2 0,299 +20 0,227 0,262 49 20,2 0,310 + +20 0,207 0,287 49 16,1 0,333 +20 0,207 0,271 49 16,1 0,327 +20 0,207 0,280 49 16,1 0,322 + +20 0,187 0,337 49 10,2 0,373 +20 0,187 0,311 49 10,2 0,365 +20 0,187 0,298 49 10,2 0,376 + +20 0,157 0,321 49 28,0 0,265 +20 0,157 0,325 49 28,0 0,247 +20 0,157 0,325 49 28,0 0,288