# общее контрольное задание
## 1. Для заданной символьной строки с англоязычным текстом определите порядковый номер каждой буквы в английском алфавите.
```py
def letter_positions(text): #Объявление функции с именем letter_positions, которая принимает один параметр text (текст для анализа).
    """Определяет порядковый номер каждой буквы в английском алфавите""" #Строка документации - описание того, что делает функция.
    result = {} #Создание пустого словаря result, где: ключи - буквы алфавита;значения - списки позиций этих букв в тексте
    for char in text.lower(): #Цикл по каждому символу текста. Метод .lower() преобразует весь текст в нижний регистр, чтобы 'A' и 'a' считались одинаковыми буквами.
        if 'a' <= char <= 'z': #Проверка: является ли символ английской буквой. Отсеивает пробелы, цифры, знаки препинания и т.д.
            position = ord(char) - ord('a') + 1 #Вычисление порядкового номера буквы: ord(char) - получает ASCII-код символа; ord('a') - ASCII-код буквы 'a' (97); Вычитание дает смещение от 'a' (например: 'c' - 'a' = 2); + 1 - чтобы нумерация была с 1, а не с 0
            if char in result: #Проверка: есть ли уже такая буква в словаре
                result[char].append(position) #Если буква уже есть - добавляем новую позицию в существующий список
            else:
                result[char] = [position] #Если буквы еще нет - создаем новую запись в словаре со списком из одной позиции
    return result #Возврат результата - готового словаря с позициями всех букв
# Текст из помощи Python
help_text = "Python is an interpreted, high-level, general-purpose programming language."
positions = letter_positions(help_text)
print("1. Порядковые номера букв в тексте:")
1. Порядковые номера букв в тексте:
for letter, pos_list in positions.items():
    print(f"Буква '{letter}': позиции {pos_list}")

    
Буква 'p': позиции [16, 16, 16, 16, 16]
Буква 'y': позиции [25]
Буква 't': позиции [20, 20, 20]
Буква 'h': позиции [8, 8, 8]
Буква 'o': позиции [15, 15, 15]
Буква 'n': позиции [14, 14, 14, 14, 14, 14]
Буква 'i': позиции [9, 9, 9, 9]
Буква 's': позиции [19, 19]
Буква 'a': позиции [1, 1, 1, 1, 1]
Буква 'e': позиции [5, 5, 5, 5, 5, 5, 5, 5, 5]
Буква 'r': позиции [18, 18, 18, 18, 18, 18]
Буква 'd': позиции [4]
Буква 'g': позиции [7, 7, 7, 7, 7, 7]
Буква 'l': позиции [12, 12, 12, 12]
Буква 'v': позиции [22]
Буква 'u': позиции [21, 21]
Буква 'm': позиции [13, 13]
```
## 2. Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение.
```py
# Создаем список из слов этого задания
task_words = ["Для", "заданной", "символьной", "строки", "с", "англоязычным", 
             "текстом", "определите", "порядковый", "номер", "каждой", "буквы"]
print("\n2. Поиск слова в списке:")

2. Поиск слова в списке:
print(f"Список слов: {task_words}")
Список слов: ['Для', 'заданной', 'символьной', 'строки', 'с', 'англоязычным', 'текстом', 'определите', 'порядковый', 'номер', 'каждой', 'буквы']
# Проверяем наличие существующего слова
search_word = "строки"
if search_word in task_words:
    print(f"Слово '{search_word}' найдено в списке")
else:
    print(f"Слово '{search_word}' отсутствует в списке")

    
Слово 'строки' найдено в списке
# Проверяем наличие отсутствующего слова
search_word = "программирование"
if search_word in task_words:
    print(f"Слово '{search_word}' найдено в списке")
else:
    print(f"Слово '{search_word}' отсутствует в списке")

Слово 'программирование' отсутствует в списке
```
## 3. Создайте список студентов и списки баллов
```py
# Список студентов
students = ["Снегура", "Туровец", "Ефремов", "Хатюхин"]
# Баллы за летнюю сессию (в порядке списка студентов)
summer_grades = [4.5, 3.8, 4.2, 4.7]
# Баллы за зимнюю сессию (в другом порядке)
winter_grades = [4.3, 4.6, 3.9, 4.8]
print("\n3. Поиск средних баллов студента:")

3. Поиск средних баллов студента:
# Запрашиваем фамилию студента
student_name = input("Введите фамилию студента: ")
Введите фамилию студента: Снегура
if student_name in students:
    # Находим индекс студента
    student_index = students.index(student_name)
    
    # Получаем баллы за летнюю сессию
    summer_grade = summer_grades[student_index]
    
    # Для зимней сессии создаем словарь для быстрого поиска
    winter_dict = dict(zip(students, winter_grades))
    winter_grade = winter_dict[student_name]
    
    print(f"Студент {student_name}:")
    print(f"  Летняя сессия: {summer_grade}")
    print(f"  Зимняя сессия: {winter_grade}")
    print(f"  Средний балл: {(summer_grade + winter_grade) / 2:.2f}")
else:
    print(f"Студент {student_name} не найден в списке")

    
Студент Снегура:
  Летняя сессия: 4.5
  Зимняя сессия: 4.3
  Средний балл: 4.40
# Дополнительно: вывод всех студентов с их баллами
for i, student in enumerate(students):
    winter_grade = winter_grades[i]  # winter_grades уже в правильном порядке
    print(f"{student}: лето - {summer_grades[i]}, зима - {winter_grade}")
# Сохранение результатов в файл
with open('control_task_results.txt', 'w', encoding='utf-8') as f:
    f.write("Результаты выполнения контрольного задания\n")
    f.write("=" * 50 + "\n\n")
    
    f.write("1. Порядковые номера букв в тексте:\n")
    for letter, pos_list in positions.items():
        f.write(f"Буква '{letter}': позиции {pos_list}\n")
    
    f.write("\n2. Результаты поиска слов:\n")
    f.write(f"Слово 'строки' найдено: {'строки' in task_words}\n")
    f.write(f"Слово 'программирование' найдено: {'программирование' in task_words}\n")
    
    f.write("\n3. Данные студентов:\n")
    for i, student in enumerate(students):
        f.write(f"{student}: лето - {summer_grades[i]}, зима - {winter_grades[i]}\n")

43
52
36
40
24
32
29
32
44
32
28
35
47
44
23
38
36
24
28
28
28
29
40
22
32
32
32
32
print("\nРезультаты сохранены в файл 'control_task_results.txt'")

Результаты сохранены в файл 'control_task_results.txt'
```