Soy un programador totalmente ciego al que le gustaría aprender Python. Desafortunadamente, el hecho de que los bloques de código estén representados con diferentes niveles de sangría es un gran obstáculo. Me preguntaba si había alguna herramienta disponible que me permitiera escribir código usando llaves o algún otro delimitador de bloque de código y luego convertir ese formato en una representación con sangría adecuada que el intérprete de Python podría usar.
python
accessibility
blind
blindness
Jared
fuente
fuente
Respuestas:
Hay una solución a su problema que se distribuye con Python.
pindent.py
, se encuentra en el directorio Tools \ Scripts en una instalación de Windows (mi ruta es C: \ Python25 \ Tools \ Scripts), parece que tendrías que obtenerlo de svn.python.org si estás ejecutando en Linux u OSX.Agrega comentarios cuando los bloques están cerrados, o puede sangrar correctamente el código si se colocan comentarios. Aquí hay un ejemplo del código generado 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
Dónde estaba el original
myfile.py
: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 usar
pindent.py -r
para insertar la sangría correcta según los comentarios (lea el encabezado de pindent.py para obtener más detalles), esto debería permitirle codificar en Python sin preocuparse por la sangría.Por ejemplo, la ejecución
pindent.py -r myfile.py
convertirá el siguiente código enmyfile.py
el mismo código correctamente sangrado (y también comentado) que se produjo en elpindent.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 saber qué solución termina utilizando, si necesita más ayuda, comente esta publicación e intentaré ayudarlo.
fuente
pindent
al código alineado a la izquierda (el esquema de sangría preferido de muchos programadores ciegos) . Sería más útil , pero no como un huevo de Pascua.from __future__ import braces
pindent.py -c
; espindent.py -r
. Ryan ya señaló eso en su respuesta, pero solo lo edité para agregar un ejemplo explícito y hacer que sea más difícil pasarlo por alto. (Además, corrigí la opción de la línea de comandos para hacer eso: no es-r
lo-d
que simplemente elimina los comentarios).Personalmente, dudo que exista en este momento, ya que a muchos de los aficionados a Python les encanta el hecho de que Python sea de esta manera, delimitado por espacios en blanco.
Sin embargo, nunca pensé en eso como un problema de accesibilidad. ¿Quizás sea algo para presentar como un informe de error a Python?
¿Asumiría que usa un lector de pantalla aquí sin embargo para la salida? ¿Entonces las pestañas le parecerían "invisibles"? Con una salida en Braille, podría ser más fácil de leer, pero puedo entender exactamente lo confuso que podría ser.
De hecho, esto me resulta muy interesante. Ojalá supiera lo suficiente para poder escribir una aplicación que lo haga por usted.
Creo que definitivamente es algo para lo que incluiré un informe de error, a menos que ya lo haya hecho usted mismo o quiera.
Editar: También, como se ha señalado por John Millikin También es PyBraces que podría ser una solución viable para usted, y puede ser posible ser pirateadas dependiente juntos en sus habilidades de codificación a ser exactamente lo que necesita (y espero que si ese es el caso , lo liberas para que otros como tú lo usen)
Edición 2: acabo de informar esto al rastreador de errores de Python
fuente
Aunque no soy ciego, he escuchado cosas buenas sobre Emacspeak . Han tenido un modo Python desde su versión 8.0 en 1998 (¡parecen estar listos para la versión 28.0!). Definitivamente vale la pena echarle un vistazo.
fuente
Debería poder configurar su editor para que diga las pestañas y los espacios; sé que es posible mostrar espacios en blanco en la mayoría de los editores, por lo que debe haber una opción de accesibilidad en algún lugar para decirlos.
En su defecto, hay pibraces , que se escribió como una broma, pero en realidad podría ser útil para usted con un poco de trabajo.
fuente
Si está en Windows, le recomiendo encarecidamente que eche un vistazo a EdSharp en: http://empowermentzone.com/EdSharp.htm Es compatible con todos los lectores de pantalla líderes de Windows, se puede configurar para hablar los niveles de sangría del código, o tiene una utilidad incorporada llamada PyBrace que puede convertir hacia y desde la sintaxis de llaves si desea hacerlo en su lugar, y es compatible con todo tipo de otras características que los programadores esperan de nuestros editores de texto. Lo he estado usando durante años, para todo, desde PHP hasta JavaScript, HTML y Python, y me encanta.
fuente
Aprecio su problema, pero creo que está especificando la implementación en lugar del problema que necesita resolver. En lugar de convertirlo en llaves, ¿qué tal si trabaja en una forma para que su lector de pantalla le indique el nivel de sangría?
Por ejemplo, algunas personas han trabajado en la coloración de la sintaxis de vim para representar los niveles de sangría de Python. ¿Quizás un color de sintaxis modificado podría producir algo que su lector de pantalla leería?
fuente
Todos estos tipos de respuestas de "no, no puedes" son realmente molestos. Por supuesto que puede.
Es un truco, pero puedes hacerlo.
http://timhatch.com/projects/pybraces/
utiliza una codificación personalizada para convertir llaves en bloques con sangría antes de entregárselo al intérprete.
Como acotación al margen, y como alguien nuevo en Python, no acepto el razonamiento detrás de ni siquiera permitir llaves / delimitadores de bloques genéricos ... aparte de que es la preferencia de los desarrolladores de Python. Las llaves al menos no se comerán accidentalmente si estás procesando automáticamente tu código o trabajando en un editor que no entiende que los espacios en blanco son importantes. Si está generando código automáticamente, es útil no tener que realizar un seguimiento de los niveles de sangría. Si quieres usar Python para hacer un one-liner al estilo perl, automáticamente estás lisiado. Si nada más, solo como salvaguardia. ¿Qué pasa si su programa de Python de 1000 líneas obtiene todas sus pestañas comidas? ¿Vas a ir línea por línea y averiguar dónde debería estar la sangría?
Preguntar al respecto obtendrá invariablemente una respuesta irónica como "solo hazlo 'de __ futuro __ importar llaves'", "configura tu IDE correctamente", "es mejor de todos modos, así que acostúmbrate" ...
Entiendo su punto, pero bueno, si quisiera, podría poner un punto y coma después de cada línea. Así que no entiendo por qué todos son tan inflexibles sobre el tema de los frenillos. Si necesita que su lenguaje le obligue a sangrar correctamente, no lo está haciendo bien en primer lugar.
Solo mi 2c, de todos modos voy a usar aparatos ortopédicos.
fuente
Buscando un IDE de Python accesible, encontré esto y decidí responder. En Windows con JAWS:
Lo único que nos resulta frustrante es que no podemos disfrutar de ejemplos de código en sitios web (dado que hablar con sangría en los navegadores no es demasiado cómodo, genera un habla superflua).
Feliz codificación de otro principiante de Python).
fuente
Utilizo eclipse con las extensiones pydev ya que es un IDE con el que tengo mucha experiencia. También aprecio la sangría inteligente que ofrece para codificar declaraciones if, bucles, etc.He configurado el script pindent.py como una herramienta externa que puedo ejecutar en el módulo de Python actualmente enfocado, lo que hace mi vida más fácil para poder ver qué es cerrado donde sin tener que comprobar constantemente la sangría.
fuente
Hay varias respuestas que explican cómo hacer esto. Pero recomendaría no tomar esta ruta. Si bien podría usar un script para hacer la conversión, sería difícil trabajar en un proyecto de equipo.
Mi recomendación sería configurar su lector de pantalla para anunciar las pestañas. Esto no es tan molesto como parece, ya que solo diría "sangría 5" en lugar de "pestaña pestaña pestaña pestaña pestaña". Además, la sangría solo se leería siempre que cambiara, por lo que podría pasar por un bloque completo de código sin escuchar el nivel de sangría. De esta manera, escuchar la muesca no es más detallado que escuchar las llaves.
Como no sé qué sistema operativo o lector de pantalla usa, desafortunadamente no puedo dar los pasos exactos para lograrlo.
fuente
Edsger Dijkstra usó if ~ fi y do ~ od en su "Lenguaje de comando guardado ", estos parecen tener su origen en Algol68 . También hubo algunos ejemplos de bloques protegidos por Python 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)
El código de Python destrozado por espacios en blanco se puede deshacer y renovar sin ambigüedades si se utilizan bloques protegidos if / fi, do / od & try / yrt junto con punto y coma ";" para separar declaraciones. Excelente para listas de revistas inequívocas o para cortar / pegar desde páginas web.
Debería ser bastante fácil escribir un programa Python corto para insertar / eliminar los bloques de protección y los puntos y comas.
fuente