Задача на нахождение среднего балла

Программа принимает на вход строку из оценок (2,3,4 или 5) неизвестной длины. Вычислить средний балл студента, не учитывая неуды (2). Вывести последовательно кол-во неудов и средний балл студента.

Код вот такой:

a = input()
n = len(a)
i = 0
counter = 0
while i < n:
    if a[i] == '2':
        counter = counter + 1
    i = i + 1
print(counter)
sum = 0
while i < n:
    if int(a[i]) != 2:
      i + 1
      b = int(a[i])
mean = sum / n
print (mean)

Однако программа выдаёт только количество двоек, но средний балл получается нулевой. Почему?


Ответы (3 шт):

Автор решения: Valeriy M. Raznomazov

вот так попробуйте

a = input()
n = len(a)
i = 0
counter = 0
while i < n:
    if a[i] == '2':
        counter = counter + 1
    i = i + 1
print(counter)
sum = 0
i=0
count=0
while i < n:
    if int(a[i]) != 2:
        b = int(a[i])
        count=+1
    else: b=0
    sum=sum+b
    i += 1
print(sum)
mean = sum / count
print (mean)
→ Ссылка
Автор решения: frozencoast
a = input()
marks = ['3', '4', '5']  # Учитываемые оценки
u = 0  # Количество неудов
s = 0  # Количество оценок
t = 0  # Сумма оценок

# Цикл исключает неверные символы
for m in a:
    if m == '2':
        u += 1
    elif m in marks:
        s += 1
        t += int(m)

print(u)
print(t / s if s > 0 else 0)  # Исключение деления на 0
→ Ссылка
Автор решения: n1tr0xs

Потому что после этого цикла:

while i < n:
    if a[i] == '2':
        counter = counter + 1
    i = i + 1

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

→ Ссылка