2024-06-02 11:59:00 发布
网友
我知道我可以通过加逗号来阻止print写换行符
print "Hello, world!",
但是,我如何才能阻止raw_input写换行符呢?
raw_input
print "Hello, ", name = raw_input() print ", how do you do?"
结果:
Hello, Tomas , how do you do?
我想要的结果:
Hello, Tomas, how do you do?
我知道没有人给出有效的解决方案,所以我决定试试看。 正如Ferdinand Beyer所说,在用户输入之后,不可能让raw_input()不打印新行。不过,还是有可能回到以前的状态。 我把它做成了一行。您可以使用:
raw_input()
print '\033[{}C\033[1A'.format(len(x) + y),
其中x是给定用户输入长度的整数,而y是raw_input()字符串长度的整数。虽然它可能不适用于所有终端(正如我在学习此方法时所读到的),但它在我的终端上运行良好。我用的是库本图14.04。 字符串'\033[4C'用于向右跳转4个索引,因此它相当于' ' * 4。同样,字符串'\033[1A'用于向上跳转一行。通过使用字符串最后一个索引上的字母A、B、C或D,可以分别向上、向下、向右和向左。 请注意,向上一行将删除该点上现有的打印字符(如果有)。
x
y
'\033[4C'
' ' * 4
'\033[1A'
A
B
C
D
But how do I stop raw_input from writing a newline?
简而言之:你不能
raw_input()将始终回显用户输入的文本,包括尾随的换行符。这意味着用户输入的任何内容都将打印到标准输出。
如果要防止这种情况,则必须使用终端控制库,如^{}模块。但这是不可移植的,例如,curses在Windows系统上不可用。
curses
这在一定程度上绕过了它,但没有将任何内容赋给变量name:
name
print("Hello, {0}, how do you do?".format(raw_input("Enter name here: ")))
但在打印整个消息之前,它会提示用户输入一个名称。
我知道没有人给出有效的解决方案,所以我决定试试看。 正如Ferdinand Beyer所说,在用户输入之后,不可能让
raw_input()
不打印新行。不过,还是有可能回到以前的状态。 我把它做成了一行。您可以使用:其中
x
是给定用户输入长度的整数,而y
是raw_input()
字符串长度的整数。虽然它可能不适用于所有终端(正如我在学习此方法时所读到的),但它在我的终端上运行良好。我用的是库本图14.04。字符串
'\033[4C'
用于向右跳转4个索引,因此它相当于' ' * 4
。同样,字符串'\033[1A'
用于向上跳转一行。通过使用字符串最后一个索引上的字母A
、B
、C
或D
,可以分别向上、向下、向右和向左。请注意,向上一行将删除该点上现有的打印字符(如果有)。
简而言之:你不能
raw_input()
将始终回显用户输入的文本,包括尾随的换行符。这意味着用户输入的任何内容都将打印到标准输出。如果要防止这种情况,则必须使用终端控制库,如^{} 模块。但这是不可移植的,例如,
curses
在Windows系统上不可用。这在一定程度上绕过了它,但没有将任何内容赋给变量
name
:但在打印整个消息之前,它会提示用户输入一个名称。
相关问题 更多 >
编程相关推荐