sirve - ¿Hay alguna forma de convertir la sangría en el código Python en llaves?
que es la indentación de codigo y para que sirve (12)
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é hay de trabajar en una forma de que su lector de pantalla le diga el nivel de sangría?
Por ejemplo, algunas personas han trabajado en la coloración de sintaxis vim para representar los niveles de sangría python. ¿Tal vez una coloración de sintaxis modificada podría producir algo que su lector de pantalla leería?
Soy un programador totalmente ciego que desea 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 a una representación con sangría apropiada que el intérprete de Python podría usar.
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 lanzar 28.0!). Definitivamente vale la pena echarle un vistazo.
Buscando un IDE de Python accesible, encontré esto y decidí responder. En Windows con JAWS:
- Vaya al Centro de configuración presionando JawsKey + 6 (en la fila numérica encima de las letras) en su editor de texto favorito. Si JAWS le pide que cree un nuevo archivo de configuración, acuerde.
- En el campo de búsqueda, escribe "sangría"
- Solo habrá un resultado: "Decir caracteres de sangrado". Enciende esto.
- ¡Disfrutar!
Lo único que es frustrante para nosotros es que no podemos disfrutar de ejemplos de código en sitios web (ya que la sangría en los navegadores no es muy cómoda, genera un habla superflua).
Feliz codificación de otro principiante de Python).
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 hablarlos.
En su defecto, hay PyBraces , que fue escrito como una broma, pero podría ser útil para usted con un poco de trabajo.
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 tu lector de pantalla para anunciar las pestañas. Esto no es tan molesto como suena, ya que solo diría "sangría 5" en lugar de "tab tab tab tab tab". Además, la sangría solo se leería cada vez 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 indentación no es más detallado que escuchar las llaves.
Como no sé qué sistema operativo o lector de pantalla utilizo, desafortunadamente no puedo dar los pasos exactos para lograrlo.
Personalmente, dudo que exista actualmente, ya que a muchos de los aficionados de 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. Tal vez es algo que presentar como un informe de error a Python?
Supongo que utiliza un lector de pantalla aquí sin embargo para la salida? ¿Entonces las pestañas te parecerían "invisibles"? Con una salida de Braille, podría ser más fácil de leer, pero puedo entender exactamente qué tan confuso puede ser.
De hecho, esto es muy interesante para mí. Desearía saber lo suficiente para poder escribir una aplicación que haga esto por ti.
Creo que definitivamente es algo por lo que incluiré un informe de error, a menos que ya lo haya hecho usted mismo o desee.
Editar: También, como lo noted John Millikin También hay PyBraces que podrían ser una solución viable para usted, y es posible que sea pirateado dependiendo de sus habilidades de codificación para ser exactamente lo que necesita (y espero que si ese es el caso , lo liberas para que otros como tú lo usen)
Editar 2: Acabo de informar esto al rastreador de errores de python
Python admite llaves para definir bloques de código, y también admite el uso de etiquetas ''begin'' y ''end''.
Por favor vea estos ejemplos de código:
class MyClass(object): #{
def myfunction(self, arg1, arg2): #{
for i in range(arg1): #{
print i
#}
#}
#}
Y un ejemplo con estilo bash:
fi = endclass = enddef = endclass = done = None
class MyClass(object):
def myfunction(self, arg1, arg2):
for i in range(arg1): #do
if i > 5: #then
print i
fi
done
enddef
endclass
Lo mejor de esto es que puedes olvidarte de poner un corchete cercano, ¡y sigue siendo un pitón válido!
class MyClass(object): #{
def myfunction(self, arg1, arg2): #{
for i in range(arg1): #{
print i
# whoops, forgot to close that bracket!
#}
#}
Mi verdadero consejo es obtener una pantalla en Braille si puedes pagar una / fuente uno: los programadores de pitones ciegos de mi conocimiento realmente encontraron una pantalla Braille indispensable para escribir programas de pitón, hace que la sangría sea mucho menos dolorosa. Una pantalla de 40 celdas vale la pena.
Si está en Windows, le recomiendo que eche un vistazo a EdSharp desde: http://empowermentzone.com/EdSharp.htm Es compatible con todos los principales lectores de pantalla 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 ay desde la sintaxis de llaves si usted quiere hacer eso 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, desde PHP hasta JavaScript, desde HTML hasta Python, y me encanta.
Todos estos tipos de respuestas "no, no puedes" son realmente molestas. Por supuesto que puede.
Es un truco, pero puedes hacerlo.
utiliza una codificación personalizada para convertir las llaves en bloques con sangría antes de entregárselo al intérprete.
Como un lado, y como alguien nuevo en Python, no acepto el razonamiento detrás de ni siquiera permitir llaves / delimitadores genéricos de bloque ... aparte de eso, es la preferencia de los desarrolladores de python. Los apoyos al menos no se comerán accidentalmente si está haciendo un procesamiento automático de su código o trabajando en un editor que no entiende que el espacio en blanco es importante. Si está generando código automáticamente, es útil no tener que hacer un seguimiento de los niveles de indentación. Si quieres usar Python para hacer un estilo único de Perl-esque, estás automáticamente lisiado. Si nada más, solo como salvaguarda. ¿Qué pasa si tu programa de 1000 líneas de python obtiene todas sus pestañas? Vas a ir línea por línea y averiguar dónde debe ser el sangrado?
Preguntar al respecto invariablemente tendrá una respuesta irónica como "just do ''de __ future __ import llaves''", "configure su IDE correctamente", "de todos modos es mejor, así que acostúmbrate a eso" ...
Veo 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 las llaves. Si necesita su idioma para obligarlo a sangrar correctamente, no lo está haciendo desde el principio.
Solo mi 2c - Voy a usar aparatos de todos modos.
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, bucles, etc. He configurado el script pindent.py como una herramienta externa que puedo ejecutar en el módulo Python actualmente enfocado, lo que hace mi vida más fácil para que pueda ver qué es cerrado donde sin tener que revisar constantemente la sangría.
Edsger Dijkstra usó if ~ fi y do ~ od en su "Lenguaje de comando Algol68 ", estos parecen provenir de Algol68 . También hubo algunos ejemplos de bloques protegidos de 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 pitón mutilado en espacios en blanco puede ser sin ambigüedades y reinventado si se usan bloques protegidos si / fi, do / od & try / yrt junto con los puntos y comas ";" para separar las declaraciones. Excelente para listados de revistas inequívocas o para cortar / pegar desde páginas web.
Debería ser bastante fácil escribir un programa corto de Python para insertar / eliminar los bloques de guardia y los puntos y comas.
Hay una solución a su problema que se distribuye con Python. pindent.py
, está ubicado en el directorio Tools / Scripts en una instalación de Windows (mi ruta de acceso es C: / Python25 / Tools / Scripts), parece que lo hubiera tomado de svn.python.org si es corriendo en Linux o OSX.
Agrega comentarios cuando los bloques están cerrados, o puede sangrar correctamente el código si se incluyen los comentarios. Aquí hay un ejemplo del código emitido por pindent con el comando:
pindent -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 myfile.py
original era:
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 -d
para insertar la sangría correcta en función de los comentarios (lea el encabezado de pindent.py para obtener más información), esto le permitirá codificar en python sin preocuparse por la sangría.
Me gustaría saber qué solución terminas usando, si necesitas más ayuda, por favor comenta esta publicación e intentaré ayudarte.