我想在python中输入数据,但是在输入数据时,必须输出右侧,例如kg:

简单的代码:

weight = float(input('Enter your weight: (kg)'))


输出:

Enter your weight: some_number (kg)


我希望公斤在输入数据时始终位于数字的右侧。我认为问题很明确,如果不能解决,请告诉我。谢谢!

最佳答案

如果深入研究,您会发现称为getch的各种版本。这使用来自py-getch的代码:

import sys

try:
    from msvcrt import getch
except ImportError:
    def getch():
        import tty
        import termios
        fd = sys.stdin.fileno()
        old = termios.tcgetattr(fd)
        try:
            tty.setraw(fd)
            return sys.stdin.read(1)
        finally:
            termios.tcsetattr(fd, termios.TCSADRAIN, old)

ascii_numbers = [ord('0') + x for x in range(10)]
weight = 0.0
while True:
    message = f"Enter your weight: {weight:9.2f} (kg)"
    sys.stdout.write("\r" + message)
    sys.stdout.flush()
    c = ord(getch())
    if c == 13:
        break
    elif c in ascii_numbers:
        c = c - ord('0')
        weight = (weight * 10) + (float(c) / 100)
    elif c == 127:
        weight = weight / 10
print("")


这很丑陋,但是我上次使用ncurses的经历更加丑陋。

警告

该程序将忽略Ctrl-C调用内的getch。可以修改此代码,以使停止程序的唯一方法是终止进程。抱歉。

08-19 19:12