2 / 2 / 1
Регистрация: 24.02.2019
Сообщений: 14

Задача на чтение из файла и сортировку

24.02.2019, 21:33. Показов 18667. Ответов 9

Студворк — интернет-сервис помощи студентам
Здравствуйте, прошу помощи, имеется задача:
"В олимпиаде по информатике принимало участие несколько человек.

Определите и выведите средние баллы участников олимпиады в 9 классе, в 10 классе, в 11 классе.

Входные данные

Информация о результатах олимпиады записана в файле, каждая строка которого имеет вид:

фамилия имя класс балл.

Фамилия и имя — текстовые строки, не содержащие пробелов. Класс - одно из трех чисел 9, 10, 11. Балл - целое число от 0 до 100.

В этой задаче файл необходимо считывать построчно, не сохраняя содержимое файла в памяти целиком.

Входные данные:
Иванов Сергей 9 90
Сергеев Петр 10 91
Петров Василий 11 92
Васильев Иван 9 93

Вывод программы:
91.5 91.0 92.0"

Не могу решить, от слова совсем. Открываю файл:
fin = open('input.txt', 'r', encoding='utf8')
Читаю файл:
s = fin.read().split()

А дальше вообще не понимаю, что делать. Как произвести сортировку? Как сделать значение "номер класса" "зависимым" от баллов, чтобы, если участников от одного класса больше одного, подсчитать средне арифметическое значение баллов?
Желательно не использовать словари и загружаемые модули.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2019, 21:33
Ответы с готовыми решениями:

Задача на чтение из типизированного файла
Всем привет, задачка вроде простая, но я оч туплю)) Есть програмка: program zapisi; const n = 5; type

Задача про чтение и запись файла
Добрый вечер! Решаю задачу про старт и финиш спортсменов. Нужно было в файл записать имя спортсмена и время старта, считанное с...

Есть задача на чтение из файла и обработку двумерного массива в Fortran, написал на C++, надо написать на fortran
#include <iostream> #include <fstream> #include <string> /* Составить программу для реализации предложенного вариантом...

9
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
24.02.2019, 22:02
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
def main():
    grades = [[] for i in range(3)]
    with open("input.txt", "r") as lines:
        for line in lines:
            lastName, name, grade, score = line.strip().split(" ", maxsplit = 4)
            grade, score = int(grade) - 9, int(score)
            grades[grade].append(score)
        for scores in grades:
            print(sum(scores) / len(scores), end = " ")
 
if __name__ == "__main__":
    main()
1
2 / 2 / 1
Регистрация: 24.02.2019
Сообщений: 14
25.02.2019, 07:43  [ТС]
Здравствуйте, спасибо за ответ) Могли бы вы в общих словах обьяснить алгоритм решения? Почему, во второй строке у вас “range(3)”?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
25.02.2019, 08:50
elya_ni, 1) Создаем список списков оценок учеников каждого класса (будет 3 списка: 9, 10 и 11 классы);
2) Считываем построчно данные из файла;
3) Добавляем оценку ученика в соответствующий класс;
4) Считаем среднее арифметическое оценок каждого класса;
5) Выводим результат;
6) Profit!
Цитата Сообщение от elya_ni Посмотреть сообщение
Почему, во второй строке у вас “range(3)”?
https://python-scripts.com/range
1
2 / 2 / 1
Регистрация: 24.02.2019
Сообщений: 14
25.02.2019, 13:17  [ТС]
Спасибо, буду разбираться)
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
25.02.2019, 13:47
можно через словарь, откинув не используемые переменные lastName, name, плюс код не привязан подаче на вход трех классов, подав любое количество классов код не нужно переписывать под эти данные
Python
1
2
3
4
5
6
7
8
9
10
11
12
def main():
    dct = {}
    with open("input.txt", "r") as lines:
        for line in lines:
            grade, score = map(int,line.split()[-2:]) # откинув не используемые переменные lastName, name
            dct[grade] = dct.get(grade,[]) + [score]
    for the_class in dct :
        x = dct.get(the_class)
        print(f'класс-{the_class}, средний балл = {sum(x)/len(x)}')
 
if __name__ == "__main__":
    main()
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
25.02.2019, 17:24
Semen-Semenich,
Цитата Сообщение от elya_ni Посмотреть сообщение
Желательно не использовать словари и загружаемые модули
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
25.02.2019, 17:31
Arsegg, не дочитал
0
2 / 2 / 1
Регистрация: 24.02.2019
Сообщений: 14
25.02.2019, 21:41  [ТС]
Спасибо за еще одно решение) Просто мы на курсе еще словари не начали проходить, поэтому это было лично мое уточнение)

Добавлено через 1 час 52 минуты
Arsegg, подскажите, пожалуйста, если мы добавим в задачу дополнительное условие: вывести кол-во учеников по классам с максимальным баллов, то почему, если после 8 строки вашего кода добавить «print(grades.count(max(scores))”, то выводятся одни нули?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
25.02.2019, 22:03
elya_ni,
Цитата Сообщение от elya_ni Посмотреть сообщение
print(grades.count(max(scores))
Python
1
print(scores.count(max(scores))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.02.2019, 22:03
Помогаю со студенческими работами здесь

Реализовать сортировку массива пузырьком, сортировку выбором и сортировку вставками
Вообщем в файле задан некий массив,так вот нужно провести сортировку пузырьком,сортировку выбором и сортировку вставками этого массива. ...

Сортировку вставками меняем на Пирамидальную сортировку и на Сортировку подсчётом
Здравствуйте. Я не как не могу разобраться.Помогите. У меня есть листинг сортировки вставками: #include "stdafx.h" ...

Задача на сортировку
Не понимаю в чем дело( Прошу помочь с кодом) #include <iostream> using namespace std; int random (int A) { int mas,i; ...

Задача на сортировку
Здравствуйте, помогите пожалуйста Создайте файл, содержащий фамилии студентов и их экзаменационные оценки по 5 предметам. Напишите...

Задача на сортировку
ЗАДАНИЕ: Имеется текстовый файл, в котором занесены сведения о студентах колледжа. Список не упорядочен, набран без соблюдения правил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru