Как исправить, TypeError: объект ‘float’ не поддается повторению

#python #python-3.x

#python #python-3.x

Вопрос:

Я пытаюсь написать программу, которая вычисляет оценки, вычисляет среднее значение и показывает ошибку при вводе букв. Я думаю, что я в значительной степени закончил с кодом, но я запутался в том, как исправить проблему «TypeError: объект ‘float’ не поддается повторению».

 def calculate_average(total, count):
    average = total / count
    return average

while 1:
    try:
        grade = float(input("Enter a test score, or a negative number to get the average: "))
        total = sum(grade)
        count = len(grade)
        if grade < 0:
            break
        average = calculate_average(total, count)
        print("Total: ", total)
        print("Average:", round(average))
    except ValueError:
        print("BRUH")
  

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

1. total = sum(grade) ? Это не так, как это работает, это не так, как все это работает!

2. grade это одна оценка, а не список оценок.

Ответ №1:

Очевидно, вы хотите, чтобы пользователь вводил несколько чисел. Однако в вашем коде пользователь может ввести только одно число, и один foat, очевидно, не может быть суммирован и не имеет длины.

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

Вот рабочий пример:

 def calculate_average(total, count):
    average = total / count
    return average

while 1:
        grades = []
        while 1:
            inp = input("Enter a test score, or a negative number to get the average: ")

            try:
                inpGrade = float(inp)

                if inpGrade > 0:
                    grades.append(inpGrade)
                elif inpGrade < 0:
                    break

            except ValueError:
                print("BRUH")

        total = sum(grades)
        count = len(grades)
        average = calculate_average(total, count)
        print("Total: ", total)
        print("Average:", round(average))
        break