我想在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
。可以修改此代码,以使停止程序的唯一方法是终止进程。抱歉。