为什么用户对输入(提示)的响应中有IDLE的Shell颜色编码关键字?

时间:2019-04-05 15:09:39

标签: python python-3.x keyword python-idle

我正在开发一个Python 3程序,该程序通过Python Shell从用户那里获取输入。由于某种原因,当我在外壳中输入信息时(一旦输入要求输入信息...),它就是使用特定颜色为关键字和函数着色。

例如,如果我输入“ John is blue”。它将单词“ is”作为关键字着色(从技术上讲是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

3 个答案:

答案 0 :(得分:2)

Python input()函数不能也不可以对输入文本的显示方式做任何事情。它仅在输入文字并按Enter键后才接收文字。而是由IDLE Shell窗口应用颜色更改,该窗口实现了Python解释程序所连接的输入和输出环境。

在突出显示时,IDLE Python shell将 all 用户输入视为Python源代码。这只是文本在显示器上的呈现方式的一种变化,它对input()函数返回的字符串值没有影响。

可以充当Python交互式解释器的前端显示的其他环境(IDE控制台,终端窗口,笔记本UI等),每个环境都有其自己特定的文本处理方式。

答案 1 :(得分:2)

IDLE编辑器和Shell窗口中的着色是由IDLE语法着色器完成的。在Shell中,它还为控制台提示('>>>'),内部IDLE错误(现在极为罕见),用户代码回溯和用户代码输出着色。 (所有颜色都可以在“设置”对话框的“突出显示”选项卡上进行自定义。)因此,不应在代码输入之间关闭着色器。

除非您的程序请求输入python代码,否则我认为将input()响应着色为小错误。但是,如何告诉着色器忽略它们并不清楚。对于显示,input()提示是常规输出。除此之外,可以在提示之前输入响应。在出现提示之前或不按ENTER的情况下,尝试以下操作。

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

以上内容也适用于python,但至少在Windows控制台中,直到显示提示,我才看到该条目。

答案 2 :(得分:0)

您可以使用 python pygments 打印语法突出显示的文本 一个很好的入门方法是 prompt_toolkit 模块,它支持 pygments 和许多命令行功能

然后你可以创建一个 prompt() 作为输入,并设置 pygments 词法分析器

检查 prompt_toolkit 文档或 https://replit.com/@CodinUser/PyShell-15 以查看语法突出显示输入 pygments prompt_toolkit 的实际使用