From 8efa0f35b48a3bbed950bc9fb0e05e33352be79d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=83=D0=B7=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=9F=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=BE?= <124675990+CrazyDuck192@users.noreply.github.com> Date: Thu, 13 Apr 2023 17:51:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=93=D1=80=D1=83=D0=BF=D0=BE=D0=B2=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B4=D0=B0=D0=BD=D0=BD=D1=8F=20(13.04)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.txt | 0 2.txt | 0 msg.txt | 0 program1.py | 36 +++++++++++++++++++++++++++ program2.py | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 107 insertions(+) create mode 100644 1.txt create mode 100644 2.txt create mode 100644 msg.txt create mode 100644 program1.py create mode 100644 program2.py diff --git a/1.txt b/1.txt new file mode 100644 index 0000000..e69de29 diff --git a/2.txt b/2.txt new file mode 100644 index 0000000..e69de29 diff --git a/msg.txt b/msg.txt new file mode 100644 index 0000000..e69de29 diff --git a/program1.py b/program1.py new file mode 100644 index 0000000..3da5c0d --- /dev/null +++ b/program1.py @@ -0,0 +1,36 @@ +import time + +def input_message(method_count=0): + with open('exercises/2.txt', 'w') as f: + f.write('') + + with open('exercises/msg.txt', 'a') as f: + f.seek(0) + f.truncate() + while True: + method = input('Ввести метод та параметри: ') + if method == 'quit': + open('exercises/1.txt', 'w').write('quit') + quit() + if not method: + break + method_count += 1 + string = f'{method}\n' + f.write(string) + + with open('exercises/1.txt', 'w') as f: + f.write(str(method_count)) + +def execution(): + input_message() + while True: + try: + with open('exercises/2.txt', 'r') as f: + s = f.read() + if s: + break + except IOError: pass + time.sleep(1) + execution() + +execution() diff --git a/program2.py b/program2.py new file mode 100644 index 0000000..ea95895 --- /dev/null +++ b/program2.py @@ -0,0 +1,71 @@ +import time + +def execution_cls(cls): + error_number = 0 + execution_number = 0 + with open('exercises/1.txt', 'r+') as f: + if f.readline().split()[0] == 'quit': + f.truncate(0) + quit() + f.truncate(0) + + with open('exercises/msg.txt') as f: + lines = f.readlines() + for line in lines: + line = line.split() + if line[0] == 'quit': + quit() + elif line[0] == 'call': + print(f'Виконання методу {line[1]}:') + try: + method = getattr(cls, line[1]) + method(cls, *line[2:]) + execution_number += 1 + except AttributeError: + error_number += 1 + print(f' Методу {line[1]} немає у класі!') + except TypeError: + error_number += 1 + print(' Некоректна кількість параметрів: метод не виконано!') + elif line[0] == 'add_method': + print(f'Додавання методу {line[1]}:') + length = int(line[2]) + def dynamic_method(self, *args): + if len(args) == length: + print(*args) + else: + raise TypeError + setattr(cls, line[1], dynamic_method) + print(f' Метод {line[1]} додано!') + execution_number += 1 + print(f'Виконано: {execution_number}; помилок: {error_number}.') + + with open('exercises/2.txt', 'w') as f: + f.write(str(execution_number+error_number)) + +class Recepient: + + def __init__(self): + pass + + def method_1(self, a): + print(a) + + def method_2(self, a, b, c): + print(a, b, c) + +def execution_main(): + while True: + try: + with open('exercises/1.txt', 'r') as f: + s = f.read() + if s: + break + except IOError: pass + time.sleep(1) + + execution_cls(Recepient) + execution_main() + + +execution_main() \ No newline at end of file