Есть ли конкретное сообщение об ошибке, которое нарушает форматирование?Я не вижу проблемы с этим от руки.В зависимости от того, насколько строгим является тестирование, рассмотрите разницу между входными данными:
15 28 6 56 60000 22 496 0
и:
15 28 6 56 60000 0 22 496
и то, как ваш код обрабатывает их.Строго говоря, мы заканчиваем ввод списка чисел нулем.Но ваше решение будет включать его и вместо этого бросить 496.
Вот доработка вашего кода для решения этой проблемы, а также предложения по стилю:
def sum_divisors(n):
summation = 0
for divisor in range(1, n // 2 + 1):
if n % divisor == 0:
summation += divisor
return summation
numbers = map(int, input().split())
print("PERFECTION OUTPUT")
for number in numbers:
if number == 0:
break
summation = sum_divisors(number)
if summation < number:
status = "DEFICIENT"
elif summation > number:
status = "ABUNDANT"
else:
status = "PERFECT"
print("{:5} {}".format(number, status))
print("END OF OUTPUT")
Посмотрите, будет ли это работать лучше для вас,В противном случае включите точное сообщение об ошибке, сгенерированное вашей исходной программой.