0 / 0 / 0
Регистрация: 23.09.2019
Сообщений: 27

Выведите средний балл по каждому предмету.

01.10.2019, 07:32. Показов 17517. Ответов 68

Студворк — интернет-сервис помощи студентам
На вход подается целое натуральное число N и N строк вида:<Фамилия><Название предмета><балл>. Выведите средний балл по каждому предмету.
Пример входных данный:5
Иванов математика 5
Сидоров физика 3
Петров математика 4
Козлов история 5
Удальцов физика 4
Пример выходных данных :
Математика 4,5
Физика 3,5
История 5
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2019, 07:32
Ответы с готовыми решениями:

Определите средний балл всех учащихся по каждому предмету
Определите средний балл всех учащихся по каждому предмету. Входные данные Заданы сначала количество учащихся n, затем n строк,...

Вывести фамилии студентов, балл по определенному предмету которых превышает средний балл по предмету на 0.5
Условие предыдущей задачи сохраняется. Вывести фамилии студентов, балл по определенному предмету которых превышает средний балл по предмету...

Подсчитать средний балл каждого студента, общий средний балл по каждому предмету
Приложение под Windows должно подсчитывать средний балл каждого студента, общий средний балл по каждому предмету. Исходной информацией...

68
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.10.2019, 13:23
Студворк — интернет-сервис помощи студентам
Welemir1, ммм, красотища. Удальцев упорно отказался показываться в выводе. Сейчас я его быстренько уговарю
0
01.10.2019, 13:25

Не по теме:

Цитата Сообщение от Damenikx Посмотреть сообщение
Удальцев упорно отказался показываться в выводе.

Не по теме:

мож отчислили его, как случится в скором времени с ТС и мириадами ботописцев?)))

0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.10.2019, 13:39
Цитата Сообщение от Welemir1 Посмотреть сообщение
у и просто оставлю это здесь
PythonВыделить код

Python
1
onstring = [e.rstrip() for e in f]
Я понимаю, к чему вы клоните

Добавлено через 3 минуты

Не по теме:

Welemir1, не знаю, хорошо, что меня уже не отчислят, уже как 3 года закончил :)



По поводу стрипа, я понимаю, что его можно использовать чтобы удалить "\n", при использовании readlines()

Добавлено через 1 минуту
И я так же понимаю, куда сбежал Удальцев

Не по теме:

Представляю, как ему сейчас икается :)



Добавлено через 2 минуты
Цитата Сообщение от Damenikx Посмотреть сообщение
По поводу стрипа, я понимаю, что его можно использовать чтобы удалить "\n", при использовании readlines()
Даже без readlines().

Добавлено через 1 минуту
Подкорректировал, сделал, поменял, как было сказано в теме, результат:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fn = r'f:/123/hello.txt'
peoples = {}
with open (fn) as f:
    onstring = [e.rstrip() for e in f]
    print(onstring)
for items in onstring:
    lessons = items.split(" ")[1]
    bal = items.split(" ")[2]
    if lessons in peoples:
        peoples[lessons].append(int(bal))
    else:
        peoples[lessons] = [int(bal)]
print(peoples)
f.close()
for lessons, bal in peoples.items():
    print(f"{lessons} {sum(bal) / len(bal):.1f}")
Вывод:
['Иванов математика 5', 'Сидоров физика 3', 'Петров математика 4', 'Козлов история 5', 'Удальцов физика 4']
{'математика': [5, 4], 'физика': [3, 4], 'история': [5]}
математика 4.5
физика 3.5
история 5.0

Добавлено через 1 минуту
Осталось только разобраться с названием предметов, которые состоят из двух слов.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
01.10.2019, 13:40
Цитата Сообщение от Damenikx Посмотреть сообщение
f.close()
м? а менеджер контекста зачем тогда?

а в целом нормально. Я надеюсь ты вынес для себя три урока:
1) как создавать словарь со списком в значениях
2) как использовать ф-строки
3) читать внимательно
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.10.2019, 13:45
Цитата Сообщение от Welemir1 Посмотреть сообщение
2) как использовать ф-строки
Надобно почитать отдельно про них, ибо я код с выводом среднего честно скопипастил у DmFat, поэтому особо в подробности не вникал, но я вникну.

Цитата Сообщение от Welemir1 Посмотреть сообщение
3) читать внимательно
Тут конечно, ничего особо не поделаешь. Невнимательность это часть меня, я знаю об этой проблеме, но ничего с этим поделать не могу, такой уж я получился

Цитата Сообщение от Welemir1 Посмотреть сообщение
1) как создавать словарь со списком в значениях
Да, это было довольно таки интересно, хоть и до словарей я в книге ещё не дошёл (знаю про них только поверхностно), всё равно это было значительным плюсом в моём обучении.

Ну и конечно же спасибо Вам уважаемые знатоки. Без Вас ничего бы не получилось

Добавлено через 31 секунду
Цитата Сообщение от Welemir1 Посмотреть сообщение
м? а менеджер контекста зачем тогда?
По тупости душевной, уберу само-собой
0
01.10.2019, 13:48

Не по теме:

Damenikx, развить внимательность легко, купи блок питания, мощный такой, поставь через него на зарядку свой телефон, и напиши программку для управления этим БП. Один раз сожжешь - плюс сто к внимательности, проверенно!

0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.10.2019, 13:55

Не по теме:

DmFat, :D Спасибо конечно за совет, но я пока не готов к таким эксперементам, но я учту! :)



Добавлено через 2 минуты
Остался у меня только один вопрос, по поводу, что если предмет из двух слов. У нас реализовано добавление в словарь по нахождению элемента в строке. Я так понимаю, что надо условие, которое будет считать количество пробелов в строке и если их больше 2-х, то считать 2 и 3 слово в строке как одно значение. Что скажете?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
01.10.2019, 14:00
Цитата Сообщение от Damenikx Посмотреть сообщение
Что скажете?
Python
1
2
3
4
5
6
7
>>> def lesson_name(value):
...     return ' '.join(value.split()[1:-1])
...
>>> lesson_name('Козлов история 5')
'история'
>>> lesson_name('Козлов Русский язык 5')
'Русский язык'
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.10.2019, 14:18
Я скажу, что мне пока не особо понятно, но я хочу разобраться и я разберусь. Дайте мне чуть-чуть времени.

Добавлено через 9 минут
Welemir1, я не понимаю. Если так сделать то наша переменная lessons становится списком.

Добавлено через 9 секунд
Пшол я читать.

Добавлено через 4 минуты
.join - это какая-то тёмная магия...
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
01.10.2019, 14:20
Цитата Сообщение от Damenikx Посмотреть сообщение
.join - это какая-то тёмная магия...
проста как 7 копеек!
https://docs.python.org/3/libr... n#str.join

и заканчивай флуд, проблема же решена, Катя довольна.
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.10.2019, 14:21
Welemir1, я вроде-бы понял.

Python
1
return ' '.join(value.split()[1:-1])
Этим самым вы отсекаете из строки первый элемент и последний!

Добавлено через 45 секунд
Цитата Сообщение от Welemir1 Посмотреть сообщение
и заканчивай флуд, проблема же решена, Катя довольна.
Хорошо. Спасибо, за учёбу
0
01.10.2019, 14:22

Не по теме:

Цитата Сообщение от Damenikx Посмотреть сообщение
Этим самым вы отсекаете из строки первый элемент и последний!
бинго! и записываю в строку, разделив пробелом

0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.10.2019, 14:26
Лучший ответ Сообщение было отмечено Welemir1 как решение

Решение

Оставляю это тут для Катьки, вдруг ей скажут сделать для предметов из двух слов, а уже есть.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fn = r'f:/123/hello.txt'
peoples = {}
with open (fn) as f:
    onstring = [e.rstrip() for e in f]
    print(onstring)
for items in onstring:
    lessons = " ".join(items.split()[1:-1])
    bal = items.split(" ")[-1]
    if lessons in peoples:
        peoples[lessons].append(int(bal))
    else:
        peoples[lessons] = [int(bal)]
print(peoples)
f.close()
for lessons, bal in peoples.items():
    print(f"{lessons} {sum(bal) / len(bal):.1f}")
Добавлено через 52 секунды

Не по теме:

Welemir1, ну собственно, теперь уж точно всё :)

1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
01.10.2019, 14:30
Damenikx, Включай логику.

Делим строку способом split(). Получаем список. Заранее известно, что первое слово это фамилия, последнее оценка.
Следовательно: items[0] - Фамилия; items[-1] - оценка. Все что между это название предмета, то бишь: items[1: -1].

Метод " ".join.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding: utf-8 -*-
 
my_list = ["first", "second", "third"]
 
print(" +=+ ".join(my_list)) # first +=+ second +=+ third
 
def join(collection:list, sep:str)->str:
    result = ""
    for value in collection[: -1]:
        result += str(value) + sep
    return result + collection[-1]
 
print(join(my_list, " +||+ ")) # first +||+ second +||+ third
Добавлено через 2 минуты
Цитата Сообщение от Damenikx Посмотреть сообщение
ну собственно, теперь уж точно всё
А как же защита от дурака?)
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.10.2019, 14:33
DmFat, спасибо, уже понемногу вникаю, но всё равно сложновато сходу, но я буду стараться!

Не по теме:

Цитата Сообщение от DmFat Посмотреть сообщение
А как же защита от дурака?)
:D

Издеваетесь? :)
Потом:
- а как же запись в файл?
- а почему бы не хранить это в БД?
- а куда же делся интерфейс?
- не забудь про доступ к программе по сети!

0
01.10.2019, 14:35

Не по теме:

Damenikx, так, если ты к концу октября Лутца не прочтешь - на глаза не появляйся! (ГУИ и метаклассы пропусти)

0
01.10.2019, 14:38

Не по теме:

Welemir1, есть проблема. К сожалению в своём маленьком, "кортофельном" городе Лутца не нашёл. Да и по республике, он вроде как есть, но его очень тяжело поймать. Поэтому знакомого попросил привезти (если найдёт). Было принято решение купить Пол Бэрри, Изучаем программирование на Python II - том, 2019г.

0
01.10.2019, 21:06

Не по теме:

Damenikx, а инет для лутца что заблокирован? нужно обращайся кину пдф формат

0
02.10.2019, 08:09

Не по теме:

Semen-Semenich, тяжело воспринимаю чтение с экрана, хотелось бы бумажную, чтобы прям с запахом :)

0
02.10.2019, 08:09

Не по теме:

Damenikx, можешь газетки рядом расстелить.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2019, 08:09
Помогаю со студенческими работами здесь

Вычислить средний балл, полученный каждым студентом заданной группы, и средний балл этой группы, по каждому предмету
Пытаюсь сделать первую часть задания и не получается из-за того что владею навыками vba не так хорошо. Возможно проблема с тем что я не...

Определить средний балл по каждому предмету
В сессию m студентов одной группы сдали 5 экзаменов. Результаты сессии представлены в виде матрицы N (m 5). Определить средний балл по...

Подсчитать средний балл по каждому предмету ведомости
Лабораторная работа №7 Тема:записи. Цель: приобретении навыков обработки таблиц ,ведомостей , документации. Задание: Ведомость...

Определить средний балл оценок по каждому предмету
Нашёл для себя задание, не могу решить, делаю не так. Так же не понимаю как сохранить данные для вывода по студентам. Что нужно...

Определеить средний балл по каждому предмету за год
Табель ученика содержит оценки по шести предметам в каждой четверти. Составьте программу определяющую средний балл по каждому предмету за...


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

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

Новые блоги и статьи
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
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
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru