在python中打印字符串+输入

时间:2014-08-10 14:27:57

标签: python python-3.x input output

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

这段代码显然不起作用,但可能对我的需求很明亮:

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

或:

char + input command + Reserverd space + char

我需要这个结果:

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

首先' |'没关系,但第二个?和空间?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

你不能直接做你想做的事。它有两种方法。


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

| What's your name:          |

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

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

但是,用户可以键入第二个|,并且在某些终端上|将在他进入后立即被删除,而在某些终端上甚至可能会被删除只需退一步就可以了。

使用termcap库可能会变得更复杂,也许可以使用readline,但这里总会有局限性;终端处于线路缓冲模式,因此您的代码无法控制在用户点击进入之前发生的事情。


或者,您可以手动接管终端并管理用户输入,以使用户保持在10个字符以内。在* nix平台上,这是来自tcsetattr的{​​{1}}和select以及read的复杂混乱;在Windows上,它是一堆" conio" stdin中的调用更简单,但文档记录较少。

但是,如果你真的想这样做,你可能应该使用更高级别的库,比如mscvrt