在对整数执行 for 循环时,正在打印一个额外的空行


for i in range(1,int(input())+1):
print(((10**i-1)//9)**2)

在 for 循环中打印了一个额外的空行。

我尝试从不同的网站寻求帮助。
电流输出为:

1
121
12321
1234321
123454321
--here the extra line is being printed--

预期输出为:

1
121
12321
1234321
123454321

这就是print的工作方式。它打印其参数的字符串表示形式,后跟end默认情况下是换行符。这就是为什么您的输出一开始并不在同一条线上。

您可以手动指定end,如下所示:

for i in range(1,int(input())+1):
print(((10**i-1)//9)**2, end='')

但随后一切都将在同一条线上。解决方法是单独打印换行符。

for i in range(1,int(input())+1):
print()
print(((10**i-1)//9)**2, end='')

在这里,换行符在字符串之前打印,以防止出现尾随。但是,将有一个前导换行符。但这可以通过不在循环的第一次迭代中调用print()来解决。

for i in range(1,int(input())+1):
if i != 0:
print()
print(((10**i-1)//9)**2, end='')

由于 op 希望在整数之间换行,但不要在末尾换行,因此表达这一点的一种简洁方法是使用join构建目标字符串,然后在没有换行符的情况下打印它。

n = int(input()) + 1
text = 'n'.join([ str(((10**i-1)//9)**2) for i in range(1,n) ])
print(text, end='')

这种方法的问题在于您在打印之前构建了整个文本。但这应该适用于小列表。

更短的替代方案是使用 argsep以及end.

print(*[ str(((10**i-1)//9)**2) for i in range(1,n) ], sep='n', end='')

最新更新