如果我理解你的问题,你希望能够写一个提示,包括%
符号字符,但用户的光标定位到符号的左边,这样的:
Enter a percent from 1-100: %
^cursor is here
这里没有这是一个通用的解决方案,因为基本的文本IO通常围绕没有明确定义的交互的输入和输出流。有些方法可以在某些情况下起作用,但在其他情况下却不起作用,但我不确定任何可以在任何地方工作的任何东西(仅限于编写GUI)。
我的一个建议是在您的提示中包含ASCII(和unicode)退格字符'\b'
(或'\x08'
)。在一些控制台上,这会将光标移动到每个退格的左侧一个字符处。
input("Enter a percent from 1-100: %\b\b\b\b\b")
这时候我从窗户CMD.exe
shell中运行Python的工作,而不是当我IDLE中运行它('\x08'
字符显示为一个框,一个小圆圈:那么,可以通过以下方式产生上面的提示从中间取出)。这有点粗糙,因为它不能阻止用户输入比%
(将被输入的第五个字符覆盖)之前的空格多的字符。
另一种可能更健壮(但不是跨平台,唉)的解决方案是使用curses
module。我对代码建议不够熟悉,但应该可以让它按照自己的意愿进行操作(甚至可以控制诸如防止用户输入三个以上的字符,或者移动%
符号以正确对齐值任何长度)。
最后一件事:我强烈建议您不要在您的input
调用周围使用eval
。如果您期望(并要求)整数值,请使用int(input())
。如果你可能会得到一个整数,也可以得到一些其他类型的值,可以使用多行来测试你得到了什么:
def get_val():
str_val = input()
try:
return int(str_val) # handle numbers like 1, 23232, etc.
except ValueError:
pass
try:
return float(str_val) # handles 23.5 and -3e-3 (but beware, also "nan" and "inf")
except ValueError:
pass
try:
return make_some_other_value(str_val) # whatever you want
except ValueError:
pass
return str_val # give up and return the string
这根本无法完成。 – arshajii
这是在Windows还是Linux?你可以看看windows上的'console'模块。可以办到。 – simonzack
我在Linux上编写这个脚本。 – user105951