поиск списка совершенных целых чисел из диапазона целых чисел

#python #list #loops #printing #range

#python #Список #циклы #печать #диапазон

Вопрос:

пользователь введет произвольный диапазон, где конечное число — это число, равное тому, что пользователь хочет получить от совершенных чисел из этих чисел, и добавит числа в список и распечатает список или элементы списка… Пример КОДА: sum_1= 0 sum_2 = 0 b = []

 a=range(1,int(input('enter_num_upto you want perfect num')))

for i in a:
    for items in range(1,i):
        if(i%items)==0:
            sum_1=sum_1 items
            sum_2=sum_2 items i
        
        if sum_1==i and (sum_2//2)==i:
                   b.append(i)
               
    for j in b:
         print(j)
    
  

код выполняется без ошибок, но не отображает никаких выходных данных ….. пожалуйста, отметьте мои ошибки и объясните правильную логику
ЗАРАНЕЕ СПАСИБО

Ответ №1:

Я думаю, проблема в том, что вы не определили список «b». Я бы предположил, что после определения

 a=range(1,int(input('enter_num_upto you want perfect num')))
  

определите b как

 b=[]
  

Это сообщит программе, что существует список «b», к которому затем можно добавлять элементы. Вы не можете добавлять элементы в список, который еще не существует.

То же самое должно быть для 2 переменных sum_1 и sum_2, вы не можете определить их условно в «if оператор», поэтому вы должны определить их в начале вашей программы, сразу после определения b

 sum_1 = 0
sum_2 = 0
  

Что касается логики вашего кода, я полагаю, вам не нужен sum_2 , после прохождения цикла for, который делает sum_1 , проверьте, равно ли sum_1 i . Но убедитесь, что всякий раз, когда вы используете «диапазон», вы устанавливаете конец как число после того, как вы хотите его закончить. Например, если вы хотите, чтобы диапазон начинался с 1 и заканчивался на I, используйте range(1,i 1) . Это только для вашего ввода. Также убедитесь, что после каждой итерации значение sum_1 возвращается к 0.

итак:

 a=range(1,int(input('enter_num_upto you want perfect num')) 1)
b=[]
sum_1=0

for i in a:
    for item in range(1,i):
       if (i%item)==0:
          sum_1= sum_1 item
     
    if sum_1==i:
        b.append(i)
    
    sum_1=0



for j in b:
   print(j)