# Общее контрольное задание.  

* Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.

* Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.

* Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.

* Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.

* Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.

* Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.

## Решение:  

```python
import math
import time
import random
import cmath

print("=== ВЫПОЛНЕНИЕ КОНТРОЛЬНОГО ЗАДАНИЯ ===\n")


print("1. Вычисление фазы комплексного числа и последующие операции:")
result = math.floor((round(cmath.phase(0.2+0.8j), 2) * 20) / 3), (round(cmath.phase(0.2+0.8j), 2) * 20) % 3
print(f"Результат: {result}")
print()


print("2. Создание объекта struct_time для московского времени:")
moscow_time = time.localtime()
print(f"Московское время: {moscow_time}")
time_str = time.asctime(moscow_time)
print(f"Строка с часом и минутами: '{time_str}'")
print()


print("3. Случайная выборка дней недели:")
week_days = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
random_days = random.sample(week_days, 3)
print(f"Дни недели: {week_days}")
print(f"Случайная выборка: {random_days}")
print()


print("4. Случайный выбор числа из последовательности:")
sequence = list(range(14, 33, 3))
random_number = random.choice(sequence)
print(f"Последовательность: {sequence}")
print(f"Случайно выбранное число: {random_number}")
print()


print("5. Генерация нормально распределенного числа и создание списка букв:")
N = round(random.gauss(15, 4))
# Создаем список букв латинского алфавита
alphabet = [chr(i) for i in range(65, 91)]  # A-Z
random_letters = random.choices(alphabet, k=N)
print(f"N = {N}")
print(f"Случайные буквы: {random_letters}")
print()


print("6. Определение временного интервала в минутах:")
time_diff = (time.time() - time.mktime(moscow_time)) / 60
print(f"Прошло минут: {time_diff:.2f}")


with open('TEMA4/results_analysis.txt', 'w', encoding='utf-8') as file:
    file.write("АНАЛИЗ РЕЗУЛЬТАТОВ\n")
    file.write("=" * 40 + "\n\n")
    
    file.write("1. КОМПЛЕКСНОЕ ЧИСЛО:\n")
    file.write(f"Результат: {result}\n")
    file.write("Анализ: Вычислена фаза комплексного числа 0.2+0.8j, выполнены\n")
    file.write("последовательные операции округления, умножения, деления\n")
    file.write("с получением целой части и остатка. Результат - кортеж.\n\n")
    
    file.write("2. ВРЕМЯ:\n")
    file.write(f"struct_time: {moscow_time}\n")
    file.write(f"Временная строка: {time_str}\n")
    file.write("Анализ: Создан объект struct_time с текущим московским временем.\n")
    file.write("Преобразован в читаемую строку с помощью asctime().\n\n")
    
    file.write("3. ДНИ НЕДЕЛИ:\n")
    file.write(f"Исходный список: {week_days}\n")
    file.write(f"Выборка: {random_days}\n")
    file.write("Анализ: random.sample() выполнил случайную выборку 3 дней\n")
    file.write("без повторений из полного списка дней недели.\n\n")
    
    file.write("4. СЛУЧАЙНОЕ ЧИСЛО:\n")
    file.write(f"Последовательность: {sequence}\n")
    file.write(f"Выбранное число: {random_number}\n")
    file.write("Анализ: random.choice() выбрал случайное число из\n")
    file.write("арифметической прогрессии от 14 до 32 с шагом 3.\n\n")
    
    file.write("5. СЛУЧАЙНЫЕ БУКВЫ:\n")
    file.write(f"N = {N}\n")
    file.write(f"Буквы: {random_letters}\n")
    file.write("Анализ: random.gauss() сгенерировал число с нормальным\n")
    file.write("распределением (μ=15, σ=4). random.choices() создал список\n")
    file.write("из N случайных заглавных латинских букв.\n\n")
    
    file.write("6. ВРЕМЕННОЙ ИНТЕРВАЛ:\n")
    file.write(f"Интервал: {time_diff:.2f} минут\n")
    file.write("Анализ: Измерено время между созданием struct_time и\n")
    file.write("моментом вычисления. time.mktime() преобразует struct_time\n")
    file.write("в секунды с эпохи для вычисления разницы.\n\n")
    
    file.write("ОБЩИЙ ВЫВОД:\n")
    file.write("Все операции выполнены успешно. Продемонстрирована работа\n")
    file.write("с математическими функциями, временем, случайными числами\n")
    file.write("и различными структурами данных Python.\n")

print("\nРезультаты записаны в файл 'results_analysis.txt'")
```

Ответ программы:  

```shell
=== ВЫПОЛНЕНИЕ КОНТРОЛЬНОГО ЗАДАНИЯ ===

1. Вычисление фазы комплексного числа и последующие операции:
Результат: (8, 2.6000000000000014)

2. Создание объекта struct_time для московского времени:
Московское время: time.struct_time(tm_year=2025, tm_mon=10, tm_mday=24, tm_hour=12, tm_min=8, tm_sec=35, tm_wday=4, tm_yday=297, tm_isdst=0)
Строка с часом и минутами: 'Fri Oct 24 12:08:35 2025'

3. Случайная выборка дней недели:
Дни недели: ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
Случайная выборка: ['Суббота', 'Среда', 'Четверг']

4. Случайный выбор числа из последовательности:
Последовательность: [14, 17, 20, 23, 26, 29, 32]
Случайно выбранное число: 26

5. Генерация нормально распределенного числа и создание списка букв:
N = 13
Случайные буквы: ['X', 'J', 'L', 'J', 'S', 'L', 'M', 'G', 'N', 'P', 'Y', 'S', 'W']

6. Определение временного интервала в минутах:
Прошло минут: 0.01

Результаты записаны в файл 'results_analysis.txt'
```