# Индивидуальное контрольное задание по теме 8 ## Задание: Разработайте функцию, на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов. Разработайте функцию c 3 аргументами, реализующую запись заданной последовательности – списка или кортежа (аргумент функции) в текстовый файл с заданным именем (аргумент функции) с заданным числом (аргумент функции) элементов на строке файла, разделенных запятыми. Проверьте её на записи в файл кортежа с 50 случайными, нормально распределенными числами с математическим ожиданием 23 и дисперсией 144 по 3 элемента в строке. ## Решение: - Модуль с функцией: ``` >>>def write_to_file(data, filename, per_line): try: with open(filename, 'w') as f: for i in range(0, len(data), per_line): # Берем часть данных part = data[i:i + per_line] # Преобразуем в строку через запятую line = ','.join(str(x) for x in part) # Записываем строку f.write(line + '\n') print(f"Данные записаны в файл '{filename}'") return True except Exception as e: print(f"Ошибка: {e}") return False ``` - Модуль с проверкой работы функции: ``` >>>import random >>>import math >>>import Mod1_test >>>def generate_numbers(): numbers = [] mean = 23 std = 12 for _ in range(50): r = sum(random.random() for _ in range(12)) - 6 number = mean + std * r numbers.append(round(number, 4)) return tuple(numbers) >>>def main(): print("=== Тест записи в файл ===") print("Генерирую 50 чисел...") data = generate_numbers() print(f"Первые 5 чисел: {data[:5]}") print(f"Всего чисел: {len(data)}") filename = "result.txt" per_line = 3 success = Mod1_test.write_to_file(data, filename, per_line) if success: print(f"\nФайл '{filename}' создан!") print("Содержимое файла:") print("-" * 30) with open(filename, 'r') as f: for line in f: print(line.strip()) print("-" * 30) >>>if __name__ == "__main__": main() === Тест записи в файл === Генерирую 50 чисел... Первые 5 чисел: (20.7413, 49.8095, 17.1957, 9.0743, 17.37) Всего чисел: 50 Данные записаны в файл 'result.txt' Файл 'result.txt' создан! Содержимое файла: ------------------------------ 20.7413,49.8095,17.1957 9.0743,17.37,20.4473 26.518,45.2142,28.8493 5.6302,35.9775,4.7096 25.659,28.9065,36.5441 23.8253,23.031,23.5629 37.4215,5.0137,12.6732 14.3271,30.2452,11.6239 21.9073,34.599,28.865 16.5312,25.1718,11.6702 25.8557,34.2817,16.7384 10.3322,20.7349,6.2315 47.4736,13.9535,12.2616 6.5036,7.742,16.2279 22.47,34.7622,34.7924 21.9614,-3.9548,40.2638 32.1589,29.3166 ------------------------------ ```