Pythonで>>>
プロンプトを常に表示するのはちょっと退屈です。プロンプトプレフィックスをランダムに変更するための最良の方法は何でしょうか?
私は次のような相互作用を想像します:
This is a tobbaconist!>> import sys
Sorry?>> import math
Sorry?>> print sys.ps1
Sorry?
What?>>
docs によると、文字列以外のオブジェクトをsys.ps1
に割り当てると、毎回str
関数が評価されます。
文字列以外のオブジェクトがいずれかの変数に割り当てられている場合、インタプリタが新しい対話型コマンドを読み取る準備をするたびに、そのstr()が再評価されます。これは、動的プロンプトを実装するために使用できます。
さて、それは明らかです、あなたはそれを動的にするべきです! __str__
メソッドを使用してオブジェクトを作成し、必要なロジックを配置できます。
class Prompt:
def __str__(self):
# Logic to randomly determine string
return string
また、このクラスに変更を加えたり、挿入したりすることもできます。したがって、たとえば、追加または変更するメッセージのリストをPrompt
に含めることができます。これは、コンソールメッセージに影響します。
これを試して:
>>> 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
プロンプトを変更するには、
>>>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-スタートアップファイル
いい質問です。 >>>
プロンプトはsys.ps1
、...
in sys.ps2
。次の質問は、これをランダムに変更する方法です。手作業で変更するデモンストレーションと同じように:
>>> import sys
>>> sys.ps1 = '<<<'
<<<sys.ps1 = '<<< '
<<< sys.ps2 = '.?. '
<<< for i in line:
.?.