Python

Помогите пожалуйста правильно организовать алгоритм цикла

делаю программу которая подсчитывает средний балл и считает нужное кол-во пятёрок до нужного балла. у меня проблема с посчётом нужного кол-ва пятёрок. кому не трудно, помогите пожалуйста..)))
count=0
def rrr():
global count
l3=sum(map(int, entr1.get())) / len(entr1.get())
for i in range(len(entr1.get())):
if l3<2.50:
f=int(entr1.get())+5
while count<2.50:
count+=1
print(count)
l11.config(text=f'до 3 не хватает {count} пятёрок')
не работает наверно именно подсчет сколько нужно пятёрок (цикл while)
заранее огромное спасибо
Михаил Мск
Михаил Мск
109
Пусть s - сумма оценок, k - количество оценок, n - необходимое кол-во пятёрок.
Получаем простейшее уравнение:
 2.5 = (s + 5 * n) / (k + n)
5 * k + 5 * n = 2 * s + 10 * n
5 * n = 5 * k - 2 * s
n = k - 2 * s / 5
И весь твой код превращается в:
 def rrr():
t = list(map(int, entr1.get()))
return max(0, len(t) - 2 * sum(t) // 5)
print(rrr())
Но если очень хочется говнокодить циклом, то:
 def rrr(): 
t, count = list(map(int, entr1.get())), 0
while (sum(t) + 5 * count) / (len(t) + count) < 2.5: count += 1
return count
print(rrr())
Sultan )))))
Sultan )))))
63 055
Лучший ответ
Михаил Мск а как сделать чтобы вместо 5 было 3 и 4?
Прежде всего, нужно убедиться, что вы используете отступы для вашего кода, чтобы ясно определить блоки кода. Ваше описание похоже на то, что вы хотите достичь среднего балла 2.50, добавляя пятерки к оценкам. Чтобы сделать это, я предлагаю следующий алгоритм:
 def calculate_fives_needed(grades, target_average): 
total = sum(grades)
count = 0
current_average = total / len(grades)

while current_average < target_average:
total += 5
count += 1
current_average = total / (len(grades) + count)

return count

# Пример использования функции
grades = [int(x) for x in entr1.get()]
target_average = 2.50
fives_needed = calculate_fives_needed(grades, target_average)
l11.config(text=f'до {target_average} не хватает {fives_needed} пятёрок')
Эта функция calculate_fives_needed принимает список оценок и целевой средний балл. Она вычисляет текущий средний балл, а затем в цикле while увеличивает сумму оценок на 5 и считает количество добавленных пятерок, пока средний балл не достигнет или не превысит целевого значения.