Как отобразить на экране символ, отличный от нажатого в Python? - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь написать программу, которая работает как веб-сайт https://www.peteranswers.com/. То есть для отображения символа на экране, который является частью ранее написанного текста, в зависимости от того, какой символ вы вводите. Моя попытка такая:

f=open("text1.txt", "r")
g=open("text2.txt", "w")

while True:
        a = input()
        g.write(a)
        c = f.read(1)
        if not c or a == "$":
                break
        print (c)

f.close()
g.close()

Это работает, но я не хотел бы отображать введенные вами символы и не должен нажимать клавишу ввода каждый раз.

Как это могло быть сделано? Существует ли более простой способ выполнить эту задачу?

Я работаю над Python 3.7 и IDLE.

1 Ответ

0 голосов
/ 30 апреля 2019

Сайт, на который вы ссылаетесь, не работает для меня. Исходя из кода, я предполагаю, что вы хотите что-то, что работает как функция ввода пароля. Но вы хотите, чтобы отображаемые символы были взяты из существующего текста вместо того, чтобы быть ничем или потоком '' s 'или' * '.

Если это так, я рекомендую вам изменить соответствующую функцию для Unix или Windows в модуле getpass. Обратите внимание, что обе функции подавления эха требуют, чтобы sys.stdout == sys. stdout (== системный терминал, а не None). Ничего не повторяйте, вам придется добавить это. Ни одна из них не работает при запуске в среде IDE, такой как IDLE, которая перепривязывает sys.stdout для печати в GUI.

Если вы работаете в Windows, вы должны прочитать https://docs.python.org/3/library/msvcrt.html#console-i-o.. Вы должны использовать putch для записи байтов или использовать getwch и putwch для ввода и вывода символов Юникода. В Unix вам придется самим копаться в коде.

...