不插入新行就可以获得用户输入吗?

2024-06-02 11:59:00 发布

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

我知道我可以通过加逗号来阻止print写换行符

print "Hello, world!",

但是,我如何才能阻止raw_input写换行符呢?

print "Hello, ",
name = raw_input()
print ", how do you do?"

结果:

Hello, Tomas
, how do you do?

我想要的结果:

Hello, Tomas, how do you do?


Tags: nameyouhelloworldinputrawdohow
3条回答

我知道没有人给出有效的解决方案,所以我决定试试看。 正如Ferdinand Beyer所说,在用户输入之后,不可能让raw_input()不打印新行。不过,还是有可能回到以前的状态。 我把它做成了一行。您可以使用:

print '\033[{}C\033[1A'.format(len(x) + y),

其中x是给定用户输入长度的整数,而yraw_input()字符串长度的整数。虽然它可能不适用于所有终端(正如我在学习此方法时所读到的),但它在我的终端上运行良好。我用的是库本图14.04。
字符串'\033[4C'用于向右跳转4个索引,因此它相当于' ' * 4。同样,字符串'\033[1A'用于向上跳转一行。通过使用字符串最后一个索引上的字母ABCD,可以分别向上、向下、向右和向左。

请注意,向上一行将删除该点上现有的打印字符(如果有)。

But how do I stop raw_input from writing a newline?

简而言之:你不能

raw_input()将始终回显用户输入的文本,包括尾随的换行符。这意味着用户输入的任何内容都将打印到标准输出。

如果要防止这种情况,则必须使用终端控制库,如^{}模块。但这是不可移植的,例如,curses在Windows系统上不可用。

这在一定程度上绕过了它,但没有将任何内容赋给变量name

print("Hello, {0}, how do you do?".format(raw_input("Enter name here: ")))

但在打印整个消息之前,它会提示用户输入一个名称。

相关问题 更多 >