amt = float(input("Please enter the amount to make change for: $"))
我希望用户输入一个美元金额,因此允许5个字符(00.00)是否有一种限制方式,以便不允许他们输入超过5个字符?
我不要这样的东西,它允许您输入5个以上但会循环播放。
while True:
amt = input("Please enter the amount to make change for: $")
if len(amt) <= 5:
print("$" + amt)
break
我希望完全禁止输入超过5个字符
答案 0 :(得分:5)
使用诅咒
还有其他方法,但是我认为这是一个简单的方法。
您可以使用 getkey()或 getstr()。但是使用getstr()比较简单,如果用户愿意,它可以让用户选择输入少于5个字符,但不超过5个字符。我认为这就是您要的。
import curses
stdscr = curses.initscr()
amt = stdscr.getstr(1,0, 5) # third arg here is the max length of allowed input
但是如果您想强制不超过5个字符,则可能要使用getkey()并将其放入for循环中,在此示例程序中,程序将等待用户输入5个字符,然后再继续,甚至不需要按回车键。
amt = ''
stdscr = curses.initscr()
for i in range(5):
amt += stdscr.getkey() # getkey() accept only one char, so we put it in a for loop
注释:
您需要调用endwin()函数将终端恢复到其原始操作模式。
调试curses应用程序时常见的问题是获取 当应用程序死机而没有恢复 终端恢复到之前的状态。在Python中,这通常发生在 您的代码有错误,并引发了未捕获的异常。钥匙没有 例如,当您键入它们时,它们会在屏幕上回显更长的时间 使得使用外壳变得困难。
集中在一起:
使用第一个示例,在您的程序中实现getstr()方法可能像这样:
import curses
def input_amount(message):
try:
stdscr = curses.initscr()
stdscr.clear()
stdscr.addstr(message)
amt = stdscr.getstr(1,0, 5) # or use getkey() as showed above.
except:
raise
finally:
curses.endwin() # to restore the terminal to its original operating mode.
return amt
amount = input_amount('Please enter the amount to make change for: $')
print("$" + amount.decode())