Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/88: Рейтинг темы: голосов - 88, средняя оценка - 4.92
2 / 2 / 1
Регистрация: 24.02.2019
Сообщений: 14

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

24.02.2019, 21:33. Показов 18638. Ответов 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 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru