Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Дан словарь students, где ключами являются имена студентов, а значениями - списки их оценок по трем предметам.

Нуртилек Кадыралиев Ученик (96), на голосовании 1 месяц назад
students = { 'Айбек': [5, 4, 3], 'Бурул': [4, 5, 5], 'Гульназ': [3, 4, 4], 'Дастан': [5, 5, 4], 'Элиза': [4, 3, 5] } Напишите программу, которая: 1) Вычислит средний балл каждого студента. 2) Выведет список отличников (студентов со средним баллом 5). 3) Выведет список хорошистов (студентов со средним баллом от 4 до 5, не включая 5).
Голосование за лучший ответ
Avis Оракул (90680) 2 месяца назад
Для начала: это бред.. имя нельзя делать ключом, потому что имена могут повторяться и тогда ключи совпадут. Это неприемлемо. Так и передайте автору задачи.
Потом в данном списке даже без расчёта видно, что ни одного отличника нет, потому что для среднего балла 5 надо чтобы все оценки были 5 - таких учеников нет.

А технически так:
 students = {'Айбек': [5, 4, 3], 'Бурул': [4, 5, 5], 'Гульназ': [3, 4, 4], 'Дастан': [5, 5, 4], 'Элиза': [4, 3, 5]} 

#1. Сказано вычислить, а не выводить.
avg = {k:sum(v)/len(v) for k,v in students.items()}

excellent = [k for k,v in avg.items() if v==5]
good = [k for k,v in avg.items() if v>=4 and v<5]

print('Отличники: ',*excellent,sep='\n')
print('Хорошисты: ',*good,sep='\n')
Похожие вопросы