首页 > 解决方案 > 如何以更好的方式格式化输出以解决 geeksforgeeks 问题

问题描述

def doorcheck(n):

    doors = []
    for i in range(n):
        doors.append(False)

    for i in range(n):
        for x in range(n):
            if (x+1) % (i+1) == 0:
                if(doors[x] is False):
                    doors[x] = 1
                else:
                    doors[x] = 0
    for i in range(n-1):
        print(doors[i], end = ' ')
    print(doors[n-1], end = '\n')

t = int(input())
for i in range(t):
    n = int(input())
    doorcheck(n)

在这里,我试图在单独的行中打印每个所需的输出。正如问题中所问

Example:
Input:
2
3
5
Output:
1 0 0
1 0 0 1 0

而且我用过

for i in range(n-1):
    print(doors[i], end = ' ')
print(doors[n-1], end = '\n')

上面的代码用于此目的。有更好的方法吗?

编辑1:我写的上面的代码有一个错误。但无论如何@Barmar 为我的问题提供了一个很好的解决方案,即以简洁的方式格式化输出。他还提出了一个初始化数组的建议,该数组在整个长度上都包含相同的元素。谢谢。

标签: python

解决方案


如果您只想打印doors由空格分隔的元素,请使用join()

print(' '.join(map(str, doors)))

您还可以将初始化的循环替换为doors

doors = [False] * n

推荐阅读