Ошибка в коде с дисперсией

Помогите, пожалуйста, найти ошибку в коде

length = int(input("Введите длину списка: "))
list = []
for i in range(length):
 number = int(input("Введите число: "))
 list.append(number)
sum = sum(list)
avg = sum / length
disp = sum((i - avg) ** 2 for i in list) / length
print("Сумма:", sum)
print("Среднее значение:", avg)
print("Дисперсия:", disp)

На строке с расчетом disp ничего не получается Строка была взята из другой программы

a = [8, 6, 0, 10]
avg = sum(a) / len(a)
disp = sum((i - avg) ** 2 for i in a) / len(a)
print("Среднее значение:", avg)
print("Дисперсия:", disp)

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

Автор решения: tiovi

list недопустимое имя, используйте другое.

Тут вы можете посмотреть ключевые слова в Python, которые не следует использовать для названия переменных, классов, функций

→ Ссылка
Автор решения: MarianD

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

Тем самым вы переписываете стандартные функции, и они просто перестают работать.

В вашем случае это имена sum и list. Я заменил эти имена именами sum_ и list_ (но только в местах, в которых они представляют обычные переменные), и все начало правильно работать:

length = int(input("Введите длину списка: "))
list_ = []
for i in range(length):
    number = int(input("Введите число: "))
    list_.append(number)
sum_ = sum(list_)
avg = sum_ / length
disp = sum((i - avg) ** 2 for i in list_) / length
print("Сумма:", sum_)
print("Среднее значение:", avg)
print("Дисперсия:", disp)

Тест:

Введите длину списка:  3
Введите число:  1
Введите число:  3
Введите число:  5

Сумма: 9
Среднее значение: 3.0
Дисперсия: 2.6666666666666665
→ Ссылка