web-dev-qa-db-ja.com

Pythonインタープリターでプロンプトをランダムに変更する

Pythonで>>>プロンプトを常に表示するのはちょっと退屈です。プロンプトプレフィックスをランダムに変更するための最良の方法は何でしょうか?

私は次のような相互作用を想像します:

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

docs によると、文字列以外のオブジェクトをsys.ps1に割り当てると、毎回str関数が評価されます。

文字列以外のオブジェクトがいずれかの変数に割り当てられている場合、インタプリタが新しい対話型コマンドを読み取る準備をするたびに、そのstr()が再評価されます。これは、動的プロンプトを実装するために使用できます。

さて、それは明らかです、あなたはそれを動的にするべきです! __str__メソッドを使用してオブジェクトを作成し、必要なロジックを配置できます。

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

また、このクラスに変更を加えたり、挿入したりすることもできます。したがって、たとえば、追加または変更するメッセージのリストをPromptに含めることができます。これは、コンソールメッセージに影響します。

67
SuperBiasedMan

これを試して:

>>> 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
21
Klaus D.

プロンプトを変更するには、

>>>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-スタートアップファイル

19
Yash Mehrotra

いい質問です。 >>>プロンプトはsys.ps1... in sys.ps2。次の質問は、これをランダムに変更する方法です。手作業で変更するデモンストレーションと同じように:

>>> import sys
>>> sys.ps1 = '<<<'
<<<sys.ps1 = '<<< '
<<< sys.ps2 = '.?. '
<<< for i in line:
.?. 
8
serv-inc