随机更改Python解释器中的提示

时间:2015-11-12 10:14:08

标签: python prompt python-interactive

总是在Python中看到>>>提示,这有点无聊。什么是随机更改提示前缀的最佳方法?

我想象一下这样的互动:

This is a tobbaconist!>> import sys
Sorry?>> import math
Sorry?>> print sys.ps1
Sorry?
What?>>

4 个答案:

答案 0 :(得分:67)

根据docs,如果您将一个非字符串对象分配给sys.ps1,那么它每次都会评估它的str函数:

  

如果将非字符串对象分配给任一变量,则其str()为   每次口译员准备阅读新的时候都要重新评估   互动指挥;这可用于实现动态提示。

现在很明显,你应该让它充满活力!使用__str__方法创建一个对象,您可以在其中放置任何所需的逻辑:

class Prompt:
    def __str__(self):
        # Logic to randomly determine string
        return string

您也可以在此课程中进行更改或插入内容。例如,您可以在Prompt中添加一个消息列表,您可以附加或更改这些消息,这将影响控制台消息。

答案 1 :(得分:21)

试试这个:

>>> import sys
>>> import random
>>> class RandomPrompt(object):
...     prompts = 'hello >', 'hi >', 'hey >'
...     def __repr__ (self): return random.choice(self.prompts)
... 
>>> sys.ps1 = RandomPrompt()
hello >1
1
hi >2
2

答案 2 :(得分:19)

要更改提示,我们使用

>>>import sys
>>>sys.ps1 = '=>'
=>

现在随机做的方式是这样的:

import random
import sys

random_prompts = ['->', '-->', '=>', 'Hello->']
sys.ps1 = random.choice(random_prompts)

要在python解释器启动时执行此操作,您可以按照本指南操作:https://docs.python.org/2/tutorial/appendix.html#the-interactive-startup-file

答案 3 :(得分:8)

好问题。 >>>提示位于sys.ps1...位于sys.ps2。接下来的问题是如何随机改变这一点。就像手动更改它的演示一样:

>>> import sys
>>> sys.ps1 = '<<<'
<<<sys.ps1 = '<<< '
<<< sys.ps2 = '.?. '
<<< for i in line:
.?.