Как изменить input в Python?

Пользователь вводит какой-то текст в терминале, например, слово "hello", но каждый введенный символ заменяется на желаемый мной, например "joke", причем после написания "joke" введенные пользователем символы просто стираются.

Пошаговый пример:

1a. h
1b. j
2a. je
2b. jo
3a. jol
3b. jok
4a. jokl
4b. joke
5a. jokeo
5b. joke

Как я могу это реализовать?


Ответы (1 шт):

Автор решения: EzikBro

Я не нашел способа сделать это только встроенными модулями, но вы можете подключить модуль keyboard с помощью команды:

pip install keyboard

Данный модуль позволяет перехватывать ввод с клавиатуры, поэтому введенные символы не будут отображаться по умолчанию. Для того чтобы вводить собственные символы при вводе с клавиатуры, можно использовать print(char, end = '') или stdout.write(char).

Пример кода:

from sys import stdout
import time
import keyboard

joke = 'joke'
n = -1
print('Input a hello:')
while True:
    t = keyboard.read_key()
    n += 1
    if n < len(joke):
        stdout.write(joke[n])
        stdout.flush()
    #задержка для того, чтобы долгое нажатие читалось как одно нажатие
    time.sleep(.1)

Также стоит отметить модуль pynput. Он также предоставляет возможность обрабатывать ввод каждой клавиши, но в более удобном виде. Примеры использования есть в документации к модулю.

→ Ссылка