@The_Beginer

Как с помощью if,elif,else подсчитать количество оценок?

Добрый день
Продолжаю постигать Python и возникла простая,на первый взгляд проблема.

Есть оценки по 3-ём дисциплинам(markgeometry,markalgebra,markinformatika)Мне надо посчитать количество 4,5 со всех объектов класса.

Проблемный участок кода ниже,всю программу не выкладываю,так как остальные блоки пока работают правильно.
Сразу напишу,что я тут предствавляю.
Цикл прохода по коллекции,входим в цикл. И начинаем с помощью условного оператора считать оценки.
То есть если по markgeometry стоит 5 или по markalgebra стоит 5 или по markinformatika стоит 5, то мы обновляем счётчик.
Аналогично и к другим оценкам. То есть условие в цикле проверяет каждый атрибут класса и если там есть указанная в условии оценка,то всё это добавляется в счётчик.

countfour1=0
          countfive1=0
          counttri=0
          for student in studinfos:
                 if (student.markgeometry==4) or (student.markalgebra==4) or (student.markinformatika==4):
                      countfour1+=1
                 elif (student.markgeometry==5) or (student.markalgebra==5) or (student.markinformatika==5):
                     countfive1+=1
                 elif (student.markgeometry==3) or (student.markalgebra==3) or (student.markinformatika==3):
                      counttri+=1
          print("Количество 5-рок = ", countfive1)
          print("Количество 4-рок = ", countfour1)
          print("Количество 3-ек = ", counttri)


Прикрепляю скриншот,и как вы видите там явно больше 3,4,5 при вводе и меньше после выполнения блока.
В одном случае у меня посчитало(И то неправильно, в другом показывает 0)
Сразу напишу было и if вместо elif(но это ошибка), в условиях было вместо or -> and и убирал скобки из оператора ветвления.

Также ставил точки остановки и смотрел по-шаговое выполнение. Он всё видит, но не считает.
Сам оператор инкримента стоит правильно,потому что я в другой функции считаю студентов и он выводит правильное количество.

600829d686a66042403788.jpegcountfour1=0
  • Вопрос задан
  • 345 просмотров
Решения вопроса 1
MinTnt
@MinTnt
Ой кхем, в предыдущем ответе ошибся.
Всё оказалось проще, из-за того что после опетора if записаны elif, то если код срабатывает хоть на 1 значение, дальше он не продолжает. А из-за того что в каждом варянте из student была 4рка, оно каждый раз останавливалось на проверке 4рок

Просто поменять все elif на if
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект