Как найти процент в табеле успеваемости на Python?

#python

#python

Вопрос:

Пожалуйста, направьте меня; Я хочу напечатать процент по трем предметам. Программа, которую я создал, является:

 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
  

Я не могу понять, как найти процент в этой программе. Пожалуйста, скажите мне, что добавить и куда добавить?
Мой ожидаемый результат:

 Talha's Highest in Maths: 10 and percentage is: 83.4%
Fazeel's Highest in Maths: 8 and percentage is: 73.34%
Usayd's Highest in Maths: 7 and percentage is: 53.34%
Mujtuba's Highest in Maths: 4 and percentage is: 20%
Sufyan's Highest in English: 9 and percentage is: 53.34%
Aukasha's Highest in English: 8 and percentage is: 60%
Moiz's Highest in Maths: 8 and percentage is: 66.67%
Mohid's Highest in Maths: 9 and percentage is: 70%
Wasil's Highest in Science: 9 and percentage is: 80%
  

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

1. Что представляет собой процент? Основываясь на ваших данных, Талха набрал 10 баллов по математике, так как же вы получаете 83,4%?

2. посмотрите на массивы, которые они представляют, всего 3 предметных отметки, процент от этих трех предметов.

3. Вычислите простое среднее значение на основе элементов в scores[a] . Это довольно просто — просто добавьте элементы и разделите на длину предметов, или 3 в данном случае.

4. Я просто не могу понять, куда поместить это в коде?

5. Ниже приведен код, посмотрите один раз и дайте мне знать, если возникнут какие-либо проблемы

Ответ №1:

Существует множество способов улучшить свой код, используя функцию предварительной сборки или методы, предоставляемые python.

 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):
    h_marks = (max(scores[a]))
    subject = subjects[scores[a].index(h_marks)]
    percentage = round(sum(scores[a])/30*100, 2)
    print(f"{names[a]}'s Highest in {subject}: {h_marks} and percentage is: {percentage}%")
    a = a 1
  

В этом коде

  1. max (список) вернет вам максимальное значение из списка.
  2. list.index(x) вернет индекс «x» в списке «list».
  3. round (x, y) округлит ваше число с плавающей запятой «x» на «y», состоящее из десятичных цифр.
  4. f»Значение x: {x}» называется форматированием строки, которое помещает значение x в строку при создании и инициализации строки.

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

1. спасибо за ваш ответ, но я новичок и не могу понять ни одной вещи, которую вы сделали в своем коде.-_-

2. Хороший ответ! Было бы еще лучше, если бы вы добавили ссылки на документацию по каждому из пунктов для дальнейшего чтения в OP. Другая питонизация: используйте zip для перебора names и scores вместо while

3. @Sara, пожалуйста, найдите несколько объяснений об изменениях и новых функциях или методах, используемых в этом коде, и как их можно применять в целом. и я полностью согласен с предложением, данным @PranavHosangadi, этот код определенно может быть оптимизирован и хорошо написан, но предполагая, что Сара довольно новичок в python, поэтому базовая модификация выполняется в коде, чтобы лучше понять код.

4. ок, нет проблем @MdZafarHassan. Я бы, конечно, постарался узнать о новых функциях раньше 🙂

Ответ №2:

Как нам, вам нужны общие оценки каждого ученика, чтобы вы могли суммировать на каждой итерации внутреннего цикла. Как только общее значение будет получено из 3 предметов.

После получения итога вы можете посчитать процент.

Вот обновленный код

 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
    total = 0
    while i<=2:
        total  = scores[a][i]
        if scores[a][i]>highest:
            highest=scores[a][i]
            subject=subjects[i]
        i=i 1
        percentage = str("{:.2f}".format(total/30*100)) 
    print(names[a] "'s Highest in",str(subject) ":", str(highest) " and percetnage is ", percentage)
    a=a 1
  

ВЫВОД:

 Talha's Highest in Maths: 10 and percetnage is  83.33                                                                         
Fazeel's Highest in Maths: 8 and percetnage is  73.33                                                                         
Usayd's Highest in Maths: 7 and percetnage is  53.33                                                                          
Mujtuba's Highest in Maths: 4 and percetnage is  20.00                                                                        
Sufyan's Highest in English: 9 and percetnage is  53.33                                                                       
Aukasha's Highest in English: 8 and percetnage is  60.00                                                                      
Moiz's Highest in Maths: 8 and percetnage is  66.67                                                                           
Mohid's Highest in Maths: 9 and percetnage is  70.00                                                                          
Wasil's Highest in Science: 9 and percetnage is  80.00                                                                        
                                                                                                                              
                                                                                                                              
...Program finished with exit code 0
  

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

1. Хотя ответы только для кода могут отвечать на вопрос, вы могли бы значительно улучшить качество своего ответа, предоставив контекст для вашего кода, причину, по которой этот код работает, и некоторые ссылки на документацию для дальнейшего чтения. Это особенно применимо, когда OP является новичком и пытается понять, почему их код не работает.

2. На самом деле я новичок, и этот ответ помог мне, поэтому вам не следует посвящать его @PranavHosangadi

3. @VishalSheth не могли бы вы, пожалуйста, упростить его еще больше..

4. Каким образом, например, вы хотите оптимизировать код. Если это так, я могу предложить определить постоянную переменную и изменяемую переменную. Если вы не понимаете, пожалуйста, дайте мне знать. Спасибо

5. Я не могу понять эту строку: процент = str(«{:.2f}».format(всего/ 30 * 100))