Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

3.3 KiB

  1. Разработайте функцию с 2 аргументами, которая для заданного словаря (аргумент функции) с любыми ключами и с числовыми значениями создаёт новый словарь с теми же ключами и со значениями, равными синусам от значений из входного словаря, и записывает новый словарь в бинарный файл с заданным именем (аргумент функции). Проверьте функцию на примере двух разных входных словарей.

Модуль 1

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
   

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

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()


>>> 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}