ejecutar - interprete de python descargar
Cambia aleatoriamente la solicitud en el intérprete de Python (4)
Buena pregunta. El indicador >>>
está en sys.ps1
, el ...
en sys.ps2
. La siguiente pregunta sería cómo cambiar esto al azar. Solo como una demostración de cambiarlo a mano:
>>> import sys
>>> sys.ps1 = ''<<<''
<<<sys.ps1 = ''<<< ''
<<< sys.ps2 = ''.?. ''
<<< for i in line:
.?.
Es un poco aburrido ver siempre el >>>
prompt en Python. ¿Cuál sería la mejor manera de cambiar aleatoriamente el prefijo de solicitud?
Imagino una interacción como:
This is a tobbaconist!>> import sys
Sorry?>> import math
Sorry?>> print sys.ps1
Sorry?
What?>>
De acuerdo con los docs , si asigna un objeto no string a sys.ps1
, evaluará la función str
de cada vez:
Si se asigna un objeto no de cadena a cualquiera de las variables, su str () se vuelve a evaluar cada vez que el intérprete se prepara para leer un nuevo comando interactivo; esto se puede usar para implementar una solicitud dinámica.
Bueno, ahora es obvio, ¡deberías hacerlo dinámico! Haz un objeto con un método __str__
donde puedes colocar la lógica que quieras:
class Prompt:
def __str__(self):
# Logic to randomly determine string
return string
También puede hacer cambios o insertar cosas en esta clase a medida que avanza. Entonces, por ejemplo, podría tener una lista de mensajes en Prompt
que anexe o cambie, y eso afectará el mensaje de la consola.
Para cambiar el prompt, usamos
>>>import sys
>>>sys.ps1 = ''=>''
=>
Ahora la forma de hacerlo al azar sería algo como esto:
import random
import sys
random_prompts = [''->'', ''-->'', ''=>'', ''Hello->'']
sys.ps1 = random.choice(random_prompts)
Para ejecutar esto cuando se inicia el intérprete de python, puede seguir esta guía: https://docs.python.org/2/tutorial/appendix.html#the-interactive-startup-file
Prueba esto:
>>> 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