#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)