Задача на нахождение среднего балла
Программа принимает на вход строку из оценок (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, а значит, что ваш второй цикл будет работать не так, как хотелось бы.