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

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

01.10.2019, 07:32. Показов 17055. Ответов 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 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
2695 / 1601 / 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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru