Python 3, как ограничить ввод input так чтобы он вводил не больше 3х знаков. При вводе 4того и дальше он просто ничего не вводил
A = float(input("Введите число")
Как ограничить ввод 3мя символами, чтобы больше 3х не вводил ничего
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Можно изгальнуться через getch. Но это не 100% переносимое решение c ограниченными возможностями по редактированию вводимой строки (ну или надо самому дописывать функционал).
def get_getch_func():
try:
import termios
except ImportError:
# Похоже что мы под Windows
import msvcrt
return lambda: msvcrt.getch().decode()
# Для Linux создадим свою функцию getch
import sys, tty
def _getch():
f = sys.stdin.fileno()
attr = termios.tcgetattr(f)
try:
tty.setraw(f)
symbol = sys.stdin.read(1)
finally:
termios.tcsetattr(f, termios.TCSADRAIN, attr)
return symbol
return _getch
getch = get_getch_func()
def input_limit(limit, text=""):
print(text, end="", flush=True)
inp = ""
while True:
symb = getch()
if symb in "\r\n":
print()
return inp
elif inp and symb in "\b\x7f": # Backspace или Crtl-H
print("\b \b", end="", flush=True)
inp = inp[:-1]
elif symb == "\x03": # Ctrl-C
raise KeyboardInterrupt
elif len(inp) < limit:
print(symb, end="", flush=True)
inp += symb
A = float(input_limit(3, "Введите число "))
print(A)