如果我理解你的問題,你希望能夠寫一個提示,包括%
符號字符,但用戶的光標定位到符號的左邊,這樣的:
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