(是的,我已经到处寻找解决方案,而且,如果我看到它,我也无法解决我的问题。我是 Python 新手,抱歉!)
我有一项工作要做,它对我说: “用户将输入 X 和 Y。显示从 1 到 Y 的序列,每行仅包含 X 个元素。”
例如 2 4作为入口
1 2
3 4
例如 2 6
1 2
3 4
5 6
好吧...所以,我考虑这样做:
line, final = input().split()
line = int(line)
final = int(final)
List = []
i = 0
total = (final // line)
spot = 0
correction = 0
k = 1
if i != final:
List = list(range(1, final + 1, 1))
i += 1
while k != total:
spot = line * k + correction
correction += 1
k += 1
list.insert(List, spot, '\n')
print(*List)
好的。所以我设法构建了从 1 到“最终”变量的列表。 还设法找到将在哪些点(因此,var“spot”)创建我的新行。 (必须使用修正变量和一些数学来达到它,但它是 10/10)
到目前为止,一切都很好。 唯一的问题是这项工作应该在 URI Online Judge 上交付,它要求我的结果显示如下:
2 10作为入口
1 2
3 4
5 6
7 8
9 10
并且,使用我刚刚发布的代码,我得到以下结果:
1 2
3 4
5 6
7 8
9 10
因此,它说我的代码是错误的。我已经尝试了一切来删除这些空格(我认为)。使用 sys 不起作用,因为它只打印一个参数。尝试使用 join (但我可能做错了,因为我还是新手)
嗯,我已经尝试了几乎所有的方法。希望有人能帮助我。
提前致谢:)
最佳答案
您已经构建了一个包含每个必要字符(包括换行符)的列表。因此,您有一个如下所示的列表:
[1, 2, '\n', 3, 4, '\n'...]
当您将参数解压到 print()
时,它会在每个参数之间放置一个分隔符,默认为空格。因此,它打印 1
,然后是一个空格,然后是 2
,然后是一个空格,然后是换行符,然后是一个空格...这就是为什么你有一个空格每行的开头。
不要在列表中插入换行符,而是使用 iter
和 next
对该列表进行分块:
>>> def chunks(x, y):
... i = iter(range(1, y+1))
... for row in range(y//x):
... print(*(next(i) for _ in range(x)))
... t = tuple(i)
... if t:
... print(*t)
...
>>> chunks(2, 6)
1 2
3 4
5 6
>>> chunks(2, 7)
1 2
3 4
5 6
7
关于python - 打印列表时保持Python在换行后不留空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40169417/