форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
70 строки
3.0 KiB
Markdown
70 строки
3.0 KiB
Markdown
# Индивидуальное контрольное задание по теме 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()
|
|
``` |