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)
→ Ссылка