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

3.0 KiB

Индивидуальное контрольное задание по теме 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()