uVA 382( https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=318 ) 相当简单:给定一个数字,说出它是完美、不足还是丰富的数字。但似乎我的格式有问题。这是问题想要的:
输出的第一行应为“PERFECTION OUTPUT”。接下来的 N 行输出应该列出每个输入整数是完美的、不足的还是丰富的,如下例所示。格式计数:回显的整数应在输出行的前 5 个空格内右对齐,后跟两个空格,然后是整数的描述。输出的最后一行应为“END OF OUTPUT”。
这是我的代码:
def sum_divisors(n):
sm = 0
for i in range(1, n):
if n % i == 0:
sm += i
return sm
n = list(map(int, input().split()))
n.pop()
print("PERFECTION OUTPUT")
for i in n:
sm = sum_divisors(i)
if sm == i:
state = "PERFECT"
if sm < i:
state = "DEFICIENT"
if sm > i:
state = "ABUNDANT"
spaces = ' ' * (5 - len(str(i)))
print("{}{} {}".format(spaces, i, state))
print("END OF OUTPUT")
现在,我已经尝试使用具有许多不同输出的 uDebug,并且我得到了正确的答案,我认为问题不在于算法。我认为这是关于输出的格式,但不知道我做错了什么。