我想获取输入,然后在同一行上打印输出。这种尝试不起作用。
while True:
op = input("Input: ")
print("\tOutput: " + op)
输出如下:
Input: a
Output:a
Input: cat
Output cat
Input: 32
Output: 32
我希望它看起来像这样:
Input: a Output: a
Input cat Output: cat
Input: 32 Output: 32
这在Python中可行吗?它需要覆盖一行输出,但我不知道它是否可能,或者如何做。
答案 0 :(得分:1)
你不能轻易做到,特别是跨平台。那是因为当你按“输入”时(惊喜!)换行。
所以你要做的就是将光标向上移动一行。您可以使用linux上的控制代码执行此操作 - 我不确定如何在Windows上执行此操作,但它可能很尴尬。
如果您使用的是Mac / Linux,请尝试以下操作:
move_back = '\033[F'
choice = ''
while choice != 'q':
choice = input('Input: ')
print('{move_back}Input: {input_} Ouput: {output}'.format(
move_back=move_back,
input_=choice,
output=choice.upper(),
))
您需要重新打印输入的原因是因为光标从上一行的开头开始。如果您只是打印Output:...
,那么它将覆盖已存在的内容。 是用于移动光标的控制代码,但打印出已有的光盘也很容易。
答案 1 :(得分:1)
这取决于stdout和stdin的绑定(默认输出和输入通道)。问题的关键在于用户必须按“Enter”提交输入,并且通常绑定到CR / LF对。如果您的I / O设备已启用后退一行,则可以打印该字符,重新打印输入,然后打印输出。
在不知道设备或其特性的情况下,我无法提供实际代码。查看友好的邻居文档以获取相应的控制字符。
答案 2 :(得分:1)
如果您使用的是 Windows ,则可以使用Python的msvcrt
模块:
In [4]: import msvcrt
...: import sys
...: while True:
...: op = ""
...: print('Input: ', end='')
...: while True:
...: c = msvcrt.getch().decode('utf-8') # capture single character
...: if c == '\r': # enter pressed
...: break
...: op += c
...: print(c, end='') # print character to stdout
...: print('\tOutput: ' + op) # print whole output
...:
Input: a Output: a
Input: cat Output: cat
Input: 32 Output: 32
尝试这个(或任何其他建议)时要小心。如果您正在使用IDE,则这些命令可能无法在IDE的控制台中运行。尝试在标准Windows cmd.exe
控制台中运行代码,你应该没问题。
答案 3 :(得分:-1)
import **sys**
sys.stdout.write() #use
你可以使用" +"要连接String因为write函数接受一个参数
使用此功能结束任何行,您将使用" \ n"