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='')