Имеется файл с данными по успеваемости абитуриентов. он представляет из себя набор строк, где в каждой строке записана следующая информация:
фамилия; ; ;
поля внутри строки разделены точкой с запятой, оценки — целые числа.
напишите программу, которая считывает файл с подобной структурой и для каждого абитуриента выводит его среднюю оценку по этим трём предметам на отдельной строке, соответствующей этому абитуриенту.
также в конце файла, на отдельной строке, через пробел запишите средние по , и языку по всем абитуриентам.
в качестве ответа на прикрепите полученный файл со средними оценками.
примечание. для разбиения строки на части по символу '; ' можно использовать метод split следующим образом:
print('first; second-1 second-2; third'.split('; '))
# ['first', 'second-1 second-2', 'third']
то что в файле который прилагается
salomon; 87; 50; 48
osborne; 35; 70; 60
macey; 62; 87; 35
barnes; 32; 90; 55
benson; 66; 50; 24
hardman; 37; 55; 92
parson; 68; 75; 61
dyson; 70; 91; 90
winter; 89; 79; 76
young; 49; 90; 38
dowman; 74; 36; 59
ryder; 64; 65; 25
paterson; 41; 67; 60
forman; 90; 90; 94
leapman; 88; 58; 49
wainwright; 38; 38; 80
flatcher; 53; 75; 91
anderson; 71; 79; 53
dunce; 94; 46; 31
gilson; 43; 42; 81
wayne; 56; 65; 92
harrison; 24; 63; 30
chandter; 38; 95; 76
forster; 78; 73; 70
pass; 66; 94; 60
johnson; 32; 72; 44
peacock; 92; 73; 71
haig; 90; 77; 37
hawkins; 34; 32; 74
stephen; 86; 86; 66
webster; 37; 67; 48
adrian; 32; 24; 52
jenkin; 38; 79; 87
bootman; 99; 91; 34
foster; 89; 69; 66
gill; 96; 91; 82
oldman; 65; 24; 83
jones; 96; 85; 38
sheldon; 53; 87; 81
ogden; 28; 37; 93
gustman; 77; 82; 83
macdonald; 98; 69; 72
kendal; 50; 89; 97
ferguson; 52; 47; 61
freeman; 83; 56; 37
charlson; 34; 50; 49
vaughan; 71; 44; 30
simpson; 95; 32; 36
timmons; 63; 60; 71
douglas; 47; 78; 24
philips; 81; 94; 37
coleman; 34; 73; 100
mackenzie; 56; 98; 77
tracey; 85; 57; 28
kennett; 46; 74; 61
adamson; 68; 50; 39
atcheson; 67; 95; 79
sykes; 76; 66; 87
russel; 92; 30; 58
shackley; 63; 66; 92
jeff; 31; 98; 73
samuels; 26; 89; 72
durham; 44; 38; 78
shorter; 87; 91; 34
bawerman; 25; 31; 63
dodson; 75; 71; 96
aldridge; 67; 51; 86
bishop; 27; 25; 50
clapton; 33; 79; 44
garrison; 55; 73; 28
bradshaw; 33; 72; 79
owen; 65; 61; 39
clifford; 92; 99; 81
neal; 62; 31; 90
donovan; 66; 76; 74
barrington; 65; 51; 83
page; 95; 91; 42
daniels; 90; 45; 93
marlow; 58; 78; 62
flannagan; 91; 92; 59
dutton; 78; 67; 34
nevill; 62; 76; 50
babcock; 61; 76; 46
mansfield; 38; 89; 59
duncan; 47; 77; 46
thornton; 60; 36; 62
hamphrey; 86; 61; 38
Для решения данной задачи вам потребуется написать программу на одном из языков программирования, которая будет считывать данные из файла и выполнять необходимые операции. Я расскажу вам, как это можно сделать на языке Python.
Перед тем, как начать решение, вам потребуется иметь файл с данными оценок абитуриентов. Вы можете создать текстовый файл с расширением .txt и сохранить в нем предоставленные вами данные об оценках.
Теперь, давайте напишем программу для решения задачи. Вот код на языке Python:
```python
# Открываем файл с данными
with open('файл_с_данными.txt', 'r') as file:
lines = file.readlines() # Считываем все строки из файла
# Создаем переменные для хранения сумм оценок и количества предметов
sum_math = 0
sum_physics = 0
sum_english = 0
count = 0
# Обрабатываем каждую строку из файла
for line in lines:
data = line.strip().split('; ') # Разделяем строку на данные по символу '; '
if len(data) == 4: # Проверяем, что строка содержит все необходимые данные
# Получаем оценки по предметам из данных
math = int(data[1])
physics = int(data[2])
english = int(data[3])
# Считаем сумму оценок и увеличиваем счетчик предметов
sum_math += math
sum_physics += physics
sum_english += english
count += 1
# Вычисляем средний балл по предметам для текущего абитуриента
average = (math + physics + english) / 3
# Выводим средний балл на экран
print(f'Средний балл для абитуриента {data[0]}: {average}')
# Вычисляем средний балл по предметам для всех абитуриентов
average_math = sum_math / count
average_physics = sum_physics / count
average_english = sum_english / count
# Выводим средний балл по предметам на экран
print(f'\nСредний балл по математике: {average_math}')
print(f'Средний балл по физике: {average_physics}')
print(f'Средний балл по английскому языку: {average_english}')
# Записываем средние баллы в файл
with open('средние_баллы.txt', 'w') as file:
file.write(f'Средний балл по математике: {average_math}\n')
file.write(f'Средний балл по физике: {average_physics}\n')
file.write(f'Средний балл по английскому языку: {average_english}\n')
```
Объяснение шагов решения:
1. Открываем файл с данными с помощью функции `open` и читаем все строки в список `lines`.
2. Создаем переменные `sum_math`, `sum_physics` и `sum_english` для хранения сумм оценок по соответствующим предметам, а также переменную `count` для подсчета количества предметов.
3. В цикле `for` обрабатываем каждую строку из списка `lines`.
4. Разбиваем строку на отдельные данные с помощью метода `split('; ')`. Проверяем, что строка содержит все необходимые данные, используя проверку `len(data) == 4`.
5. Преобразуем оценки по предметам в целые числа с помощью функции `int`.
6. Суммируем оценки по предметам и увеличиваем счетчик предметов.
7. Вычисляем средний балл по предметам для текущего абитуриента с помощью формулы `(math + physics + english) / 3`.
8. Выводим средний балл для текущего абитуриента на экран.
9. После обработки всех строк из файла, вычисляем средний балл по предметам для всех абитуриентов, разделив суммы оценок на количество предметов.
10. Выводим средний балл по предметам на экран.
11. Открываем файл `средние_баллы.txt` с помощью функции `open` и записываем в него средние баллы по предметам.
Вы можете сохранить представленный код в файл с расширением .py и запустить его на выполнение, указав имя вашего файла с данными вместо `'файл_с_данными.txt'`. Результат будет выведен на экран в терминале, а также сохранен в файле `средние_баллы.txt`.
Надеюсь, данное решение будет понятным и полезным для вас. Если у вас возникнут еще вопросы, не стесняйтесь задавать их!