【发布时间】:2016-11-05 07:54:56
【问题描述】:
我目前有代码:
import sys
shell = sys.stdout.shell
my_name = ("Bob", "STRING")
friends_name = ("Jeff", "KEYWORD")
question = ("My name is %s in green and my friend's name is %s in red" % (my_name, friends_name))
shell.write(question)
我正在尝试实现以下输出:
My name is Bob in green and my friend's name is Jeff in red.
在输出中,单词Bob 是绿色,Jeff 是红色。
但是我尝试的代码只是给出了以下输出:
My name is ('Bob', 'STRING') in green and my friend's name is ('Jeff', 'KEYWORD') in red
我确实知道只需输入 shell.write("Bob", "STRING") 即可,但如果您需要打印更多彩色内容,这会占用太多代码行。
我也试过了
my_name = shell.write("Bob", "STRING")
但是当你打印它时它只会输出3
我需要一个关于如何实现输出的答案,以及为什么它在打印时输出3
my_name = shell.write("Bob", "STRING")
我也想知道为什么它在像上面这样定义时也会奇怪地以绿色打印“Bobby”
PS。我在装有 python 3.4.3 的 Windows 机器上
【问题讨论】:
-
my_name = shell.write("Bob", "STRING")给出 3,因为write()返回写入的字符数(“Bob”为 3 个字符)。 -
哦,好吧,如果我使用
my_name = shell.write("Bobby", "STRING"),它将返回 5 @cdarke -
另外,当我这样定义它时,它会将 Bobby 打印为绿色。我什至没有要求它打印任何东西
-
需要注意的是,sys.stdout.shell的存在是用户代码执行进程如何通过socket向IDLE shell发送文本的内部实现细节。它可能会发生变化。此外,标签“STRING”和“KEYWORD”到绿色和橙色(不是红色)的特定映射只是默认设置,任何在选项对话框的突出显示选项卡上定义自定义颜色映射的用户都可以更改。
-
再解释一下:IDLE 用户进程当前通过一个套接字连接将 stdout 和 stderr 输出发送到可见 Shell。两个流中的文本块被标记为“stdout”或“stderr”以区分,写入外壳的文本获得相应的颜色编码。默认为蓝色或红色,但这又取决于自定义。
标签: python shell python-3.x variables python-idle