diff --git a/TEMA8/Mod1_test.py b/TEMA8/Mod1_test.py new file mode 100644 index 0000000..e492f50 --- /dev/null +++ b/TEMA8/Mod1_test.py @@ -0,0 +1,17 @@ +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 diff --git a/TEMA8/Mod2_test.py b/TEMA8/Mod2_test.py new file mode 100644 index 0000000..5208be6 --- /dev/null +++ b/TEMA8/Mod2_test.py @@ -0,0 +1,39 @@ +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() diff --git a/TEMA8/result.md b/TEMA8/result.md new file mode 100644 index 0000000..38a3fcd --- /dev/null +++ b/TEMA8/result.md @@ -0,0 +1,17 @@ +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 diff --git a/TEMA8/test.md b/TEMA8/test.md new file mode 100644 index 0000000..ca49cf8 --- /dev/null +++ b/TEMA8/test.md @@ -0,0 +1,97 @@ +# Индивидуальное контрольное задание по теме 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 +------------------------------ +``` \ No newline at end of file