From b3bd732ba8e1dc0ff5297ee479b48b8e24efbad3 Mon Sep 17 00:00:00 2001 From: Tsvetkova Tatyana Date: Mon, 8 Dec 2025 15:11:01 +0300 Subject: [PATCH] zadanie --- TEMA8/1818.md | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 TEMA8/1818.md diff --git a/TEMA8/1818.md b/TEMA8/1818.md new file mode 100644 index 0000000..b0c9392 --- /dev/null +++ b/TEMA8/1818.md @@ -0,0 +1,116 @@ +16. Разработайте функцию с 2 аргументами, которая для заданного словаря (аргумент функции) с любыми ключами и с числовыми значениями создаёт новый словарь с теми же ключами и со значениями, равными синусам от значений из входного словаря, и записывает новый словарь в бинарный файл с заданным именем (аргумент функции). Проверьте функцию на примере двух разных входных словарей. + +Модуль 1 +```py +import math +import pickle + +def slov_sin(input_dict, filename): + new_dict = {key: math.sin(value) for key, value in input_dict.items()} + with open(filename, 'wb') as f: + pickle.dump(new_dict, f) + print(f"Файл записан: {filename}") + return new_dict + +def read_slov(filename): + try: + with open(filename, 'rb') as f: + loaded_dict = pickle.load(f) + print(f"Файл прочитан: {filename}") + return loaded_dict + except FileNotFoundError: + print(f"Файл не найден: {filename}") + return {} + except Exception as e: + print(f"Ошибка: {e}") + return {} + +def test1(): + dict1 = {'a': 0, 'b': math.pi / 2, 'c': math.pi, 'd': 3 * math.pi / 2} + file1 = 'sin_values_1.bin' + + saved = slov_sin(dict1, file1) + loaded = read_slov(file1) + + print(f"Исходный: {dict1}") + print(f"Загруженный: {loaded}") + + if saved == loaded: + print("OK") + else: + print("ERROR") + + return loaded + +def test2(): + dict2 = {'x': 1.0, 'y': 2.0, 'z': -0.5} + file2 = 'sin_values_2.bin' + + saved = slov_sin(dict2, file2) + loaded = read_slov(file2) + + print(f"Исходный: {dict2}") + print(f"Загруженный: {loaded}") + + if saved == loaded: + print("OK") + else: + print("ERROR") + + return loaded + +if __name__ == "__main__": + print("Тесты запущены") + test1() + test2() + print("\n" + "="*60) + print("АВТОТЕСТЫ ЗАВЕРШЕНЫ") + print("="*60) +``` +Модуль 2 + ```py +import slov_module + +def run_tests(): + """Запустить все тесты""" + print("Тест 1:") + slov_module.test1() + + print("\nТест 2:") + slov_module.test2() + + print("\nТест 3 (свой):") + d = {'x': 0.5, 'y': 1.0, 'z': 2.0} + f = 'my_test.bin' + + s = slov_module.slov_sin(d, f) + print(f"Исходный: {d}") + print(f"Синусы: {s}") + + l = slov_module.read_slov(f) + print(f"Из файла: {l}") + +if __name__ == "__main__": + run_tests() + +``` + +```py + +>>> import slov_module +>>> import test_module +>>> slov_module.test1() +Файл записан: sin_values_1.bin +Файл прочитан: sin_values_1.bin +Исходный: {'a': 0, 'b': 1.5707963267948966, 'c': 3.141592653589793, 'd': 4.71238898038469} +Загруженный: {'a': 0.0, 'b': 1.0, 'c': 1.2246467991473532e-16, 'd': -1.0} +OK +{'a': 0.0, 'b': 1.0, 'c': 1.2246467991473532e-16, 'd': -1.0} +>>> slov_module.test2() +Файл записан: sin_values_2.bin +Файл прочитан: sin_values_2.bin +Исходный: {'x': 1.0, 'y': 2.0, 'z': -0.5} +Загруженный: {'x': 0.8414709848078965, 'y': 0.9092974268256817, 'z': -0.479425538604203} +OK +{'x': 0.8414709848078965, 'y': 0.9092974268256817, 'z': -0.479425538604203} +``` \ No newline at end of file