将Print()函数输出到上一行?

23

我需要一条命令来在上一行写入内容,就像print()但不带有换行符。

这里是一些示例代码:

a=0

print("Random string value")

if a==0:
    print_to_previous_line("is random")

输出

Random string value is random

我知道我可以像这样使用 print("string", value) 在同一条打印命令中使用多个不同的东西,但那不是答案。原因在此处解释起来太混乱,但“打印到上一行”将是完全正确的答案。那么实际上会是什么呢?


问题在于打印,但输入呢?如果您进行第二个输入,则它将右对齐到下一行,但是也许您更喜欢覆盖而不是逐行打印。 - demongolem
5个回答

32

29

有时您无法控制在您之前执行的打印语句(或者这样做可能很困难)。此时会出现以下情况:

  • 回到上一行开头:\033[F
  • 向右移动ncols列:\03[{ncols}G
  • 从那里开始打印。
print(f"\033[F\033[{ncols}G Space-lead appended text")

我还没有找到到达上一行的“末尾”的方法,但是您可以指定一个比上一行长度更长的ncols值。如果它比上一行,您将覆盖原有内容。


6
在5个回答中,令人惊讶的是只有这一个回答实际上回答了问题! - fsteff
NameError: name 'ncols' is not defined - Shōgun8
@Shōgun8,你定义了ncols吗?在这个例子中,OP使用f-strings,所以大括号{}之间的所有内容都必须定义为变量。 - Jacek Szałęga
似乎什么也没发生...它只是在下一行打印。 - Yarden Cohen

3
我建议使用print语句,像这样:
print("This is a text",end=" ")
end=" "的意思是,该字符串并不是“完整的”,下一个打印语句需要在同一行中。字符串" "表示应在此字符串和下一个打印语句之间留下一个空格。或者,您也可以使用end=""。希望这有所帮助!

2
我建议先打印出这样的语句:
print("Some stuff here", end=" ")

那么我会使用如下的if语句:

if stuff:
     print("Text you want displayed on same line")
else:
     print("")
     print("Text you want displayed on next line")

你能详细解释一下吗? - E.Coms
是的,第一条语句设置了可以在同一行打印。如果“stuff”为真,则会在同一行打印。如果“stuff”不为真,则第一个打印语句将不会在该行上打印任何内容,并自动开始下一行。然后第二个打印语句将打印下一行要显示的内容。 - Meh
现在有意义了。 - E.Coms
我很高兴能够帮助。@E. Coms - Meh

1
def Fib(n):
    a,b = 0,1
    c=','
    while(a<n):
       print(a, end='')   # Way to print in same line
       a,b = b, a+b
       if a<n:
         print(c, end=',') # Way to ensure keep printing in same line
Fib(1000)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接