Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/75: Рейтинг темы: голосов - 75, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 23.09.2019
Сообщений: 27

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

01.10.2019, 07:32. Показов 17726. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru