Почему ключевые слова цветовой кодировки оболочки IDLE в ответе пользователя на ввод (приглашение)? - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю над программой на Python 3, которая принимает данные от пользователя через оболочку Python. По какой-то причине, когда я вводю информацию в оболочку (как только ввод запрашивает информацию ...), она раскрашивает ключевые слова и функции определенными цветами.

Например, если я наберу "Джон голубой". Он закрасит слово «is» в качестве ключевого слова (что технически так, но это строковый ввод).

Мне не удалось открыть что-либо релевантное в Google, поэтому я задаю вопрос здесь. Спасибо.

Вот код, который запускает ввод.

    if __name__ == '__main__':

            global string
            string = str(input('Enter info: '))
            string = bytes(string.encode("utf-8"))
            c = cont.key_gen_01()
            c.func_01()



            run_a = obf_01()
            run_a.func_02()
           #run_a.func_03()
            run_a.func_04()

            run_a.func_05(string)

Снимок экрана:

Python input results

Ответы [ 2 ]

2 голосов
/ 06 апреля 2019

Раскрашивание в редакторе IDLE и окнах оболочки выполняется синтаксисом IDLE.В Shell он также раскрашивает консольные приглашения ('>>>'), внутренние ошибки IDLE (сейчас это крайне редко), обратные вызовы пользовательского кода и вывод пользовательского кода.(Все цвета могут быть настроены на вкладке «Основные» диалогового окна «Настройки».) Поэтому не следует отключать колоризатор между вводами кода.

Если ваша программа не запрашивает ввод кода Python, я считаю цветовым вводом ()ответы должны быть незначительной ошибкой.Но не очевидно, как сказать колоризатору игнорировать их.Для отображения подсказки input () являются обычными.Кроме того, ответы могут быть введены до приглашения.Попробуйте выполнить следующее, не нажимая клавишу ВВОД перед приглашением или без него.

import time; time.sleep(5); s = input('what??? '); print(s)

Вышеприведенное также работает в python, но, по крайней мере, в консоли Windows, я не вижу записи, пока не отобразится приглашение.

2 голосов
/ 05 апреля 2019

Функция Python input() не делает и не может ничего сделать с отображением введенного вами текста.Он просто получает текст после того, как он был напечатан, и вы нажимаете Enter.Вместо этого изменения цвета применяются окном оболочки IDLE, которое реализует среду ввода и вывода, к которой подключен интерпретатор Python.

Оболочка Python IDLE обрабатывает все пользовательский ввод как Pythonисходный код, когда дело доходит до выделения.Это всего лишь изменение способа отображения текста на вашем дисплее, оно не влияет на то, какое строковое значение возвращается функцией input().

Другие среды (консоли IDE, окна терминалов, пользовательские интерфейсы ноутбуков).и т. д.), которые могут выступать в качестве внешнего интерфейса для интерактивного интерпретатора Python, каждый из которых может иметь свои собственные специфические способы обработки текста.

...