Pregunta

Estoy completamente ciega programador que quiera aprender Python.Por desgracia, el hecho de que los bloques de código son representados con diferentes niveles de sangría es un gran obstáculo.Me preguntaba si hay alguna de las herramientas disponibles que me permita escribir código mediante el uso de llaves o algún otro bloque de código delimitador y, a continuación, convertir ese formato a una sangría de representación que el intérprete de Python podría utilizar?

¿Fue útil?

Solución

No hay una solución a su problema, que se distribuye con el propio python. pindent.py, se encuentra en las Herramientas\directorio de secuencias de comandos en una instalación de windows (mi ruta de acceso es C:\Python25 ools\Scripts), parece que tendría que agarrar de svn.python.org si se ejecuta en Linux o OSX.

Añade comentarios cuando los bloques están cerrados, o bien puede aplicar sangría al código si los comentarios se ponen en.He aquí un ejemplo del código emitida por pindent con el comando:

pindent.py -c myfile.py

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
       # end if
   else:
       print 'oops!'
   # end if
# end def foobar

Donde el original myfile.py fue:

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
   else:
       print 'oops!'

También puede utilizar pindent.py -r para insertar el correcto sangría basado en los comentarios (leer el encabezado de pindent.py para más detalles), esto debería permitir código en python sin tener que preocuparse acerca de la sangría.

Por ejemplo, la ejecución de pindent.py -r myfile.py vamos a convertir el código siguiente en myfile.py en el mismo correctamente la sangría (y también comentó) código como el que produce el pindent.py -c ejemplo anterior:

def foobar(a, b):
if a == b:
a = a+1
elif a < b:
b = b-1
if b > a: a = a-1
# end if
else:
print 'oops!'
# end if
# end def foobar

Me interesaría aprender lo que la solución final, si usted necesita más ayuda, por favor deje un comentario en este post y voy a intentar ayudar.

Otros consejos

Yo personalmente dudo que existe en la actualidad es en el momento, como un montón de Python aficionados encanta el hecho de que Python es de esta manera, los espacios en blanco delimitado.

En realidad nunca he pensado que como un problema de accesibilidad sin embargo.Tal vez es algo presentado como un informe de error para Python?

Yo supongo que usted usa un lector de pantalla aquí, sin embargo para la salida?De modo que las lengüetas parece "invisible" para usted?Con una salida de Braille, podría ser más fácil de leer, pero puedo entender exactamente cómo confundir este podría ser.

De hecho, esto es muy interesante para mí.Ojalá que yo sabía lo suficiente como para ser capaz de escribir una aplicación que va a hacer esto para usted.

Creo que es definitivamente algo que voy a poner en un informe de error, a menos que ya has hecho para ti mismo, o desea.

Editar:También, como señaló por Juan Millikin También hay PyBraces Lo que podría ser una solución viable para usted, y puede ser posible para ser hackeado depende de sus habilidades de codificación para ser exactamente lo que usted necesita (y espero que si ese es el caso, usted libera a cabo por los demás como a ti mismo a utilizar)

Edit 2:Acabo de informó este a python bug tracker

Aunque no soy ciego, he oído cosas buenas acerca de Emacspeak.Han tenido un modo Python desde su Versión 8.0 en 1998 (que parecen ser hasta la versión 28.0!).Definitivamente vale la pena visitar.

Usted debe ser capaz de configurar su editor para hablar de las tabulaciones y espacios-sé que es posible pantalla los espacios en blanco en la mayoría de los editores, por lo que debe haber una opción de accesibilidad de un lugar para hablar de ellos.

En su defecto, hay pybraces, que fue escrito como una broma, pero en realidad podría ser útil para usted con un poco de trabajo.

Si estás en Windows, le recomiendo que eche un vistazo a EdSharp de:http://empowermentzone.com/EdSharp.htm Soporta todos los principales de Windows screenreaders, puede ser configurado para hablar de los niveles de sangría de código, o se ha construido en utilidad llamada PyBrace que puede convertir a y desde llaves de sintaxis si desea hacerlo, en su lugar, y es compatible con todo tipo de otras características de los programadores se han llegado a esperar de nuestros editores de texto.He estado usando durante años, para todo, desde PHP a JavaScript para HTML para Python, y me encanta.

Agradezco tu problema, pero creo que es la especificación de la aplicación en lugar de el problema que necesita resolver.En lugar de convertir a la ortodoncia, como sobre el trabajo en una manera para que el lector de pantalla para decir que el nivel de sangría?

Por ejemplo, algunas personas han trabajado en vim coloreado de sintaxis para representar python niveles de sangría.Tal vez una modificación de los colores de sintaxis podría producir algo que el lector de pantalla iba a leer?

Todos estos "no se puede" tipos de respuestas son realmente molestos.Por supuesto, usted puede.

Es un hack, pero usted puede hacerlo.

http://timhatch.com/projects/pybraces/

utiliza una codificación personalizada para convertir los apoyos a la sangría de los bloques antes de entregar a la intérprete.


Como un aparte, y como alguien nuevo en python - no acepto el razonamiento detrás de ni siquiera permitiendo llaves/bloque genérico delimitadores ...aparte de que siendo de la preferencia de los desarrolladores de python.Los apoyos, al menos, no comer accidentalmente si usted está haciendo algunos de procesamiento automático de su código o trabajar en un editor que no entiende que el espacio en blanco es importante.Si estás generar código automáticamente, es útil para no tener que mantener un seguimiento de los niveles de sangría.Si desea utilizar python para hacer un perl-esque línea, usted está automáticamente paralizado.Si nada más, sólo como una medida de seguridad.¿Qué pasa si el 1000 de la línea de programa en python pone todas sus fichas comido?Vas a ir línea por línea y averiguar dónde está la sangría debe ser?

Preguntaba acerca de lo que se siempre se obtiene una lengua en la mejilla respuesta como "just do 'de __ futuro __ importación de llaves'", "configurar el IDE correctamente", "es mejor de todos modos por lo que se acostumbra a ella" ...

Veo su punto, pero bueno, si quería, podía poner un punto y coma después de cada línea.Así que no entiendo por qué todo el mundo es tan firme acerca de las llaves cosa.Si usted necesita su idioma a la fuerza a guión correctamente, usted no está haciendo la derecha en el primer lugar.

Sólo mi 2c - voy a usar llaves de todos modos.

La búsqueda de un accesibles IDE de Python, encontré esto y decidió responder.Bajo Windows con MANDÍBULAS:

  1. Ir a Centro de Configuración pulsando JawsKey+6 (en el número de fila encima de las letras) en su editor de texto favorito.Si MANDÍBULAS indicaciones para crear un nuevo archivo de configuración, de acuerdo.
  2. En el campo de búsqueda, escriba "sangría"
  3. Habrá un solo resultado:"Dicen que la sangría de los personajes".Activar esta opción.
  4. ¡A disfrutar!

La única cosa que es frustrante para nosotros es que no podemos gozar de ejemplos de código en páginas web (desde el guión habla en los navegadores que no es demasiado cómodo — genera superfluo discurso).

Feliz codificación de otra Python principiante).

Yo uso eclipse con pydev extensiones, ya que es un IDE que tengo un montón de experiencia con.También agradezco el smart sangría que ofrece para la codificación de instrucciones if, bucles, etc.He configurado el pindent.py secuencia de comandos como una herramienta externa que puedo ejecutar en la actualidad se centró módulo de python que hace mi vida más fácil para que yo pueda ver lo que está cerrado donde con necesidad de consultar constantemente la sangría.

Hay varias respuestas que explican cómo hacerlo.Pero yo recomiendo no tomar este camino.Mientras que usted podría utilizar una secuencia de comandos para realizar la conversión, sería difícil trabajar en un proyecto de equipo.

Mi recomendación sería la de configurar su lector de pantalla para anunciar las pestañas.Esto no es tan molesto como parece, ya que sólo diría "sangría de 5" en lugar de "ficha ficha ficha ficha ficha".Además, la sangría sólo sería leer siempre que cambió, así que usted podría ir a través de todo un bloque de código sin oír el nivel de sangría.De esta manera la audiencia de la sangría no es más detallado que la audición de las llaves.

Como no sé que sistema operativo o el lector de pantalla que uso yo por desgracia no puedo dar los pasos exactos para lograr esto.

Edsger Dijkstra usa si ~ fi y hacer ~ od en su "Vigilado Lenguaje de Comandos", estos parecen provenir de la Algol68.También hubo algunos ejemplo de python vigilado bloques utilizados en RosettaCode.org.

fi = od = yrt = end = lambda object: None;
class MyClass(object):
    def myfunction(self, arg1, arg2):
        for i in range(arg1) :# do
            if i > 5 :# then
                print i
            fi
        od # or end(i) #
    end(myfunction)
end(MyClass)

Espacio en blanco, trastoca el código de python puede ser inequívocamente unmangled y reindented si uno usa vigilado bloques de si/fi, do/od & try/yrt junto con el punto y coma ";" para separar instrucciones.Excelente para inequívoco de la revista listados o cortar/pegar desde páginas web.

Debe ser lo suficientemente fácil para escribir un pequeño programa en python para insertar o quitar el protector de bloques y punto y coma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top