Как найти самую высокую тему?

#python

#python

Вопрос:

Я должен напечатать самую высокую тему для каждого дочернего элемента, например xyz (имя дочернего элемента) Самый высокий в abc (предмет, по которому он получил наивысший балл) — это qrs (самая высокая оценка). Я создал следующую программу:

 subjects = ["Maths","English","Science"]
names = ["Talha","Fazeel","Usayd","Mujtuba","Sufyan","Aukasha","Moiz","Mohid","Wasil"]
scores = [[10,8,7],[8,8,6],[7,5,4],[4,0,2],[3,9,4],[7,8,3],[8,7,5],[9,5,7],[8,7,9]]
a=0
while a<len(names):
    highest=scores[a][0]
    i=0
    while i<=2:
        if scores[a][i]>highest:
            highest=scores[a][i]
        i=i 1

    print(names[a] "'s Highest in",highest)
    a=a 1
  

Результат таков:

 Talha's Highest: 10
Fazeel's Highest: 8
Usayd's Highest: 7
Mujtuba's Highest: 4
Sufyan's Highest: 9
Aukasha's Highest: 8
Moiz's Highest: 8
Mohid's Highest: 9
Wasil's Highest: 9
  

Проблема в том, что он не определяет предмет, по которому учащиеся получают наибольшее количество баллов.Пожалуйста, скажите мне, что добавить в этот код, чтобы сделать это…

Комментарии:

1. Можете ли вы показать ожидаемый результат?

Ответ №1:

Вот исправление вашего кода, чтобы включить тему:

 subjects = ["Maths","English","Science"]
names = ["Talha","Fazeel","Usayd","Mujtuba","Sufyan","Aukasha","Moiz","Mohid","Wasil"]
scores = [[10,8,7],[8,8,6],[7,5,4],[4,0,2],[3,9,4],[7,8,3],[8,7,5],[9,5,7],[8,7,9]]
a=0
while a<len(names):
    highest=scores[a][0]
    subject=subjects[0]
    i=0
    while i<=2:
        if scores[a][i]>highest:
            highest=scores[a][i]
            subject=subjects[i]
        i=i 1

    print(names[a] "'s Highest in", subject,highest)
    a=a 1
  

Однако ваш код не очень похож на pythonic и может быть написан проще:

 for i, student in enumerate(names):
    score, subject = max(zip( scores[i], subjects))
    print(f"{student}'s best subject is {subject} with a score of {score}") 
  

Который делает то же самое.

Комментарии:

1. спасибо за вашу помощь, кстати, это было бы print (имена [a] «Самый высокий в», тема, самый высокий)