@Ferbines

Как мне найти наибольшую и наименьшую сумму чисел?

Написал вот такой код для внесения оценок студентов и подсчёта суммы этих самых оценок.
Мне надо вывести имя студента у которого наибольшая сумма оценок, и точно также с наименьшей
код :

studs = {}

n = int(input("Кількість студентів: "))
s = 0
for i in range(n):
    sname = input(str(i + 1) + "-й студент: ")
    print("Введіть оцінку з предмету:")
    point1 = int(input(" Математика: "))
    point2 = int(input("Англійська мова: "))
    point3 = int(input("Російська мова : "))
    point4 = int(input("Українська мова: "))
    point5 = int(input("Історія: "))
    point6 = int(input("Фізкультура: "))

    studs[sname] = point1+point2+point3+point4+point5+point6
    
    s=point1+point2+point3+point4+point5+point6
    
    print("\tСума оцінок:", s) 
  
    
print('Найбільший бал у:')
for i in studs:
    if studs[i] >  s:
        print(i)
       
print('Найменший бал у:')
for i in studs:
    if studs[i] <  s:
        print(i)
  • Вопрос задан
  • 381 просмотр
Решения вопроса 1
MinTnt
@MinTnt
Не знаю как всё же будет лучше.
Но мне по крайней мере проще подать словарь в виде списка, и использовать сортировку через один из методов списков.
sorted_list = sorted([(x, studs[x]) for x in studs], key = lambda x: x[1]) #если вывести через print, то отобразиться в порядке возрастания список с кортежами внесённых данных
print('Найбільший бал у:', sorted_list[-1]) #Так как список отсортирован, то получается что последний элемент - наибольший
print('Найменший бал у:', sorted_list[0]) #Ну а первый соответственно наименьший
#Если нужно выводить лишь имя. То можно просто обратиться к первому элементу. sorted_list[0][0]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы