Подтвердить что ты не робот

Случайное изменение приглашения в интерпретаторе Python

Мне кажется скучным всегда видеть приглашение >>> в Python. Какой был бы лучший способ случайного изменения префикса приглашения?

Я представляю себе такое взаимодействие, как:

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

Ответ 1

В соответствии с docs, если вы назначаете нестроковый объект sys.ps1, тогда он будет каждый раз оценивать функцию str:

Если для любой переменной присваивается нестроковый объект, его str() является переоценивается каждый раз, когда переводчик готовится к чтению нового интерактивная команда; это можно использовать для реализации динамического приглашения.

Хорошо, теперь это очевидно, вы должны сделать его динамичным! Создайте объект с помощью метода __str__, где вы можете разместить любую логику, которая вам нужна:

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

Вы также можете вносить изменения или вставлять вещи в этот класс по мере того, как вы тоже. Например, у вас может быть список сообщений в Prompt, которые вы добавляете или изменяете, и это повлияет на сообщение консоли.

Ответ 2

Попробуйте следующее:

>>> 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

Ответ 3

Для изменения приглашения мы используем

>>>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

Ответ 4

Хороший вопрос. Запрос >>> находится в sys.ps1, ... в sys.ps2. Следующий вопрос заключается в том, как изменить это случайным образом. Также как демонстрация изменения вручную:

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