<p>这对我在UNIX系统上有效,使用getch from<a href="https://stackoverflow.com/questions/510357/python-read-a-single-character-from-the-user">this answer</a>从输入中读取一个字符。在</p>
<pre><code>import sys
def cursor_left():
"""Print control characters to move the cursor left one column."""
sys.stdout.write(chr(27) + '[D') # 27 is ESC
def print_blank(number):
"""Print blank character a given number of times."""
for i in range(0, number):
sys.stdout.write(" ")
def right_to_left_input(number_of_digits):
"""Have user input a number from right to left, digit by digit."""
print_blank(number_of_digits)
digits = ""
while (1):
cursor_left()
userInput = getch()
sys.stdout.write(userInput)
digits = userInput + digits # string concatenation, not addition
if (len(digits) >= number_of_digits):
break
cursor_left()
return(digits)
</code></pre>
<p>有关在xterm上移动光标的控制序列,请参见<a href="http://www.xfree86.org/current/ctlseqs.html" rel="nofollow noreferrer">this page</a>。在</p>
<p>或者,根据您使用的操作系统或shell,您可以在最后几个字符上退格并每次重新打印它们?在</p>
<p>另请参见<a href="http://www.theasciicode.com.ar/ascii-control-characters/backspace-ascii-code-8.html" rel="nofollow noreferrer">this chart of control characters</a>。尝试使用ASCII 8(退格)、ASCII 127(删除)或ASCII 10(换行;如果执行换行但没有换行,则可能允许您在某些系统上重新键入同一行。)</p>
<p>您可以打印<code>chr(8)</code>,例如,打印ASCII字符8(退格)。在</p>
<p>请参阅<a href="https://stackoverflow.com/questions/510357/python-read-a-single-character-from-the-user">this answer</a>,了解如何一次从用户读取单个字符。在</p>
<p>如果在运行getch时遇到错误,下面的代码可能仍然有效;在UNIX系统上,它对我很有用;但是它要求用户在每个数字后按enter键。它假设用户一次只输入一个数字。在</p>
^{pr2}$