如何删除循环内单行输出的最后一个空格?

How to remove last whitespace of a single line output inside a loop?

我希望我的输出在一行中,这就是我使用 end = ' ' 的原因,但由于它在一个循环中,它还在最后一个值之后添加 space 我不想。我尝试使用 strip() 但它删除了每个 space。那么如何从该循环的输出中删除最后一个 space?

import math

f0 = int(input())
r = math.pow (2, 1/12)
for i in range(5):
    f1 = f0 * (r ** i )
    print('{:.2f}'.format(f1), end= ' ')

预期输出:如果输入为 440 440.00 466.16 493.88 523.25 554.37

我的输出:440.00 466.16 493.88 523.25 554.37

您可以添加 if-else 语句并将其应用于循环的最后一次迭代。

import math

f0 = int(input())
r = math.pow(2, 1/12)
for i in range(5):
    f1 = f0 * (r ** i )
    if i == 5:
        print('{:.2f}'.format(f1))
    else:
        print('{:.2f}'.format(f1), end= ' ')

考虑将 for 循环替换为生成器表达式以及 str.join,如下所示:

print(' '.join((f'{f0*r**i:.2f}' for i in range(5))))

输出:440.00 466.16 493.88 523.25 554.37

这种方法使您不必在循环的最后一个迭代器上有不同的行为,也不必在之后编辑字符串。

str.join 在可迭代对象的每个元素之间插入字符串(在本例中为 ' '),但不在开头或结尾。