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