在python中打印字符串+输入

2024-06-26 01:36:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在试图找到一种格式化输入的方法,在输入后保留一些空格,然后在同一行中打印一些字符。你知道吗

这段代码显然不起作用,但可以满足您的需求:

print('|') + var=input("What's your name: ")+(reserved 10 characters) +print('|')

或:

char + input command + Reserverd space + char

我需要这个结果:

'|What's your name?>>> |'

第一个“|”可以,但是第二个呢?空间呢?你知道吗

非常感谢!你知道吗


Tags: 方法代码nameinputyourvar字符what
1条回答
网友
1楼 · 发布于 2024-06-26 01:36:38

你不能直接做你想做的事。有两种方法。你知道吗


首先,您可以直接打印终端控制序列,以打印出:

| What's your name:          |

…然后将光标移到冒号后面以供用户输入。幸运的是,这里只需要处理一行,所以只需要backspace,这在几乎所有要遇到的终端上都是'\x08',所以它只是:

var = input("| What's your name:          |\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08")

然而,用户将能够在第二个|上输入,并且在一些终端上|将在他一输入就被擦除,并且在一些终端上甚至可以通过在其上退格来擦除它。你知道吗

通过使用termcap库,或者使用readline,您可以变得更加复杂,但是这里总是有一些限制;终端处于行缓冲模式,因此在用户点击enter之前,您的代码无法控制发生了什么。你知道吗


或者,您可以接管终端并手动管理用户输入,以将用户控制在10个字符以内。在*nix平台上,这是一个由tcsetattrselect以及readstdin组成的复杂的混乱局面;在Windows上,这是一堆在mscvrt中的“conio”调用,它们更简单,但文档较少。你知道吗

但是,如果您真的想这样做,您可能应该使用更高级的库,比如curses。你知道吗

相关问题 更多 >