From c8fbe0ebd37a6070bb62c89be276539319cd06ec Mon Sep 17 00:00:00 2001 From: pajjilykk Date: Wed, 1 Apr 2026 10:14:54 +0700 Subject: [PATCH] lab2 --- lab2/in | 4 ++++ lab2/main.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 lab2/in create mode 100644 lab2/main.py diff --git a/lab2/in b/lab2/in new file mode 100644 index 0000000..13a377d --- /dev/null +++ b/lab2/in @@ -0,0 +1,4 @@ +Hello bookkeeper!! +Приветт мирр!! +Moooon 10000 +ääää ÖÖ \ No newline at end of file diff --git a/lab2/main.py b/lab2/main.py new file mode 100644 index 0000000..17242f5 --- /dev/null +++ b/lab2/main.py @@ -0,0 +1,62 @@ +def process_line(text: str) -> str: + if not text: + return text + + result = [text[0]] + + for i in range(1, len(text)): + current_char = text[i] + last_written = result[-1] + + if current_char == last_written: + result.append(" ") + else: + result.append(current_char) + + return "".join(result) + + +def ask_file_name(prompt: str) -> str: + while True: + file_name = input(prompt).strip() + if file_name: + return file_name + print("Ошибка: имя файла не может быть пустым. Повторите ввод.") + + +def read_lines_with_retry() -> tuple[str, list[str]]: + while True: + input_file = ask_file_name("Введите имя входного файла: ") + try: + with open(input_file, "r", encoding="utf-8") as fin: + return input_file, fin.readlines() + except (OSError, UnicodeError) as error: + print(f"Ошибка чтения файла '{input_file}': {error}") + print("Попробуйте снова.") + + +def write_lines_with_retry(lines: list[str]) -> str: + while True: + output_file = ask_file_name("Введите имя выходного файла: ") + try: + with open(output_file, "w", encoding="utf-8") as fout: + fout.writelines(lines) + return output_file + except (OSError, UnicodeError) as error: + print(f"Ошибка записи файла '{output_file}': {error}") + print("Попробуйте снова.") + + +def main() -> None: + _, lines = read_lines_with_retry() + + processed_lines = [process_line(line) for line in lines] + output_file = write_lines_with_retry(processed_lines) + + print("Обработка завершена.") + print(f"Результат записан в файл {output_file}") + + +if __name__ == "__main__": + main() +