Займемося декомпозицією.
#Вивести кількість досконалих чисел менших N.
#вводимо n
#створюємо лічильник
#для всіх i<n перевіряємо, якщо число i досконале - збільшуємо лічильник
#виводимо лічильник
#вводимо n
n = int(inpiu())
#створюємо лічильник
perfect_numbers = 0
#для всіх i<n
for i in range(1,n):
#перевіряємо на досконалість
#якщо число i досконале
if число досконале
#- збільшуємо лічильник
perfect_numbers += 1
#виводимо лічильник
print(perfect_numbers)
Тепер згадуємо визначення досконалого числа. Нам знадобиться ще одна змінна для суми дільників.
#вводимо n
n = int(inpiu())
#створюємо лічильник
perfect_numbers = 0
#для всіх i<n
for i in range(1,n):
#перевіряємо на досконалість
divisors_sum = 0
#для всіх дільників від 1 до i (без i)
for divisor in range(1,i):
#якщо divisor є дільником i
if i%divisor == 0:
#збільшуємо суму
divisors_sum += divisor
#якщо число i досконале
if divisors_sum == i
#- збільшуємо лічильник
perfect_numbers += 1
#виводимо лічильник
print(perfect_numbers)
Приблизно так. Це якщо без оптимізації.
Ну, або ж
print(sum(1 for i in range(1,int(input())) if sum(d for d in range(1,i) if i%d==0)==i))
якщо любите все в один рядок пхати.