Pergunta

Eu sou um programador totalmente cego que gostariam de aprender Python. Infelizmente o fato de que blocos de código são representados com diferentes níveis de recuo é um grande obstáculo. Eu queria saber se havia quaisquer ferramentas disponíveis que me permite escrever código usando chaves ou algum outro delimitador bloco de código e, em seguida, converter esse formato dentro de uma representação adequada recuado que o interpretador Python pode usar?

Foi útil?

Solução

Há uma solução para o problema que é distribuído com o próprio Python. pindent.py, ele está localizado na pasta Tools \ Scripts em instalar um Windows (meu caminho para ele é C: \ Python25 \ Tools \ Scripts), parece que você teria que Previsão de svn.python.org se você estiver executando no Linux ou OSX.

Acrescenta comentários quando os blocos estão fechados, ou pode código corretamente travessão se os comentários são colocados no Aqui está um exemplo do código emitido pelo pindent com o 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

Quando o myfile.py original:

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

Você também pode usar pindent.py -r para inserir o recuo correta com base em comentários (ler o cabeçalho de pindent.py para mais detalhes), este deve permitir que você código em python sem se preocupar com recuo.

Por exemplo, executando pindent.py -r myfile.py vai converter o seguinte código no myfile.py para o mesmo código adequadamente recuado (e também comentado) como produzido por exemplo a pindent.py -c acima:

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

Eu estaria interessado em saber qual a solução que você acaba usando, se você necessitar de mais ajuda, por favor comentário neste post e eu vou tentar ajudar.

Outras dicas

Eu pessoalmente dúvida de que há atualmente está no momento, como um monte de aficionados Python amo o fato de que o Python é dessa forma, espaços delimitados.

Eu nunca realmente pensei sobre isso como um problema de acessibilidade no entanto. Talvez seja algo a apresentar como um relatório de bug para Python?

Eu supor que você usa um leitor de tela aqui, porém, para a saída? Assim, as abas que parece "invisível" para você? Com uma saída de Braille, que poderia ser mais fácil de ler, mas eu posso entender exatamente como confundindo isso poderia ser.

Na verdade, isso é muito interessante para mim. Eu desejo que eu sabia o suficiente para ser capaz de escrever um aplicativo que irá fazer isso por você.

Eu acho que é definitivamente algo que eu vou colocar em um relatório de bug para, a menos que você já tenha feito isso mesmo, ou quer.

Edit: Além disso, como observou por John Millikin Há também PyBraces que pode ser uma alternativa viável solução para você, e pode ser possível para ser cortado em conjunto dependente de suas habilidades de codificação para ser exatamente o que você precisa (e espero que, se esse for o caso, liberá-lo para fora para outros como a si mesmo para uso)

Edit 2: Acabei informou esta para o bug python rastreador

coisas Embora eu não sou cego, eu ouvi boas sobre Emacspeak . Eles tiveram um modo Python desde a sua 8,0 lançamento em 1998 (eles parecem ser até liberação 28.0!). Definitivamente vale a pena conferir.

Você deve ser capaz de configurar o seu editor de falar as tabulações e espaços - Eu sei que é possível visualização espaços em branco na maioria dos editores, por isso não deve ser um lugar opção de acessibilidade para falar-lhes <. / p>

Na falta deste, há pybraces , que foi escrito como uma brincadeira, mas pode realmente ser útil para você com um pouco de trabalho.

Se você estiver no Windows, eu recomendo fortemente que você dê uma olhada EdSharp de: http://empowermentzone.com/EdSharp.htm Ele suporta todos os principais leitores de tela do Windows, ele pode ser configurado para falar os níveis de recuo de código, ou ele foi construído em um utilitário chamado PyBrace que pode converter para e de sintaxe chaves se você quiser fazer isso em vez disso, e suporta todos tipos de outros programadores características têm vindo a esperar em nossos editores de texto. Eu tenho usado por anos, para tudo, desde o PHP para JavaScript para HTML para Python, e eu adoro isso.

Eu aprecio o seu problema, mas acho que você está especificando a implementação, em vez do problema que você precisa resolver. Em vez de se converter ao aparelho, como sobre trabalhando em uma maneira para o seu leitor de tela para dizer-lhe o nível de recuo?

Por exemplo, algumas pessoas trabalharam no vim coloração de sintaxe para representam níveis de recuo Python. Talvez uma coloração de sintaxe modificada poderia produzir algo que o seu leitor de tela leria?

Todos estes "não, você não pode" tipos de respostas são realmente irritante. Claro que você pode.

É um truque, mas você pode fazê-lo.

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

usa uma codificação de chaves converter para blocos recuado antes de entregá-lo para o intérprete personalizado.


Como um aparte, e como alguém novo para python - Não aceito o raciocínio por trás nem permitindo suspensórios / delimitadores de bloco de genéricos ... além de que sendo a preferência dos desenvolvedores python . Suspensórios, pelo menos, não será comido acidentalmente se você estiver fazendo algum processamento automático de seu código ou trabalhando em um editor que não entende que o espaço em branco é importante. Se você é gerar código automaticamente, é útil para não ter de manter o controle de níveis de avanço. Se você quiser usar python para fazer um one-liner perl-esque, você está aleijado automaticamente. Se nada mais, apenas como uma salvaguarda. E se o seu programa de 1000 linha de python recebe todas as suas abas comeu? Você está indo para ir linha por linha e descobrir onde o recuo deve ser?

perguntando sobre isso, invariavelmente obter uma resposta tongue-in-cheek como "apenas faça 'a partir __ futuros __ chaves de importação'", "configurar o IDE corretamente", "é melhor de qualquer maneira para se acostumar com isso" ...

Eu vejo o seu ponto, mas hey, se eu quisesse, eu poderia colocar um ponto e vírgula após cada linha. Então eu não entendo porque todo mundo é tão inflexível sobre a coisa chaves. Se você precisar de seu idioma para forçá-lo a travessão corretamente, você não está fazendo certo em primeiro lugar.

Apenas minha 2c -. Eu vou para os aparelhos de uso de qualquer maneira

Procurando um acessíveis Python IDE, achou esta e decidiu resposta. No Windows com o JAWS:

  1. Vá para o centro Configurações pressionando JawsKey + 6 (na linha número acima das letras) em seu editor de texto favorito. Se prompts JAWS para criar um novo arquivo de configuração, concordam.
  2. No campo de busca, digite "travessão"
  3. Haverá apenas um resultado: "Diga caracteres travessão". Ativar isso.
  4. Aproveite!

A única coisa que é frustrante para nós é que não podemos desfrutar de exemplos de código em sites (desde travessão falar em navegadores não é muito confortável - que gera discurso supérfluo).

Happy codificação de outro novato Python).

Eu uso o eclipse com as extensões PyDev já que é uma IDE Eu tenho muita experiência com. Agradeço, também, o recuo inteligente que oferece para a codificação if, loops, etc. Tenho configurado o script pindent.py como uma ferramenta externa que pode ser executado no momento focado módulo python que torna minha vida mais fácil para que eu possa ver o que é fechado, onde sem ter que verificar constantemente recuo.

Existem várias respostas que explicam como fazer isso. Mas eu recomendaria não tomar este caminho. Enquanto você pode usar um script para fazer a conversão, seria torná-lo difícil de trabalhar em um projeto de equipe.

A minha recomendação seria para configurar o leitor de tela para anunciar os guias. Isto não é tão irritante quanto parece, uma vez que só diria "travessão 5" em vez de "guia guia guia guia guia". Além disso, o recuo só iria ser lido sempre que ele mudou, assim que você poderia passar por um bloco inteiro de código sem ouvir o nível de recuo. Desta forma ouvir o recuo não é mais detalhado do que ouvir as chaves.

Como eu não sei qual sistema operacional ou leitor de tela que você usa eu infelizmente não posso dar os passos exatos para alcançar este objectivo.

Edsger Dijkstra usado se ~ fi e fazer ~ od em seu "vigiado Command Language", estes parecem ter origem a partir da Algol68. Havia também alguns exemplos de python guardado blocos usados ??na 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)

Whitespace mutilado código Python pode ser inequivocamente unmangled e reindented se uma utilidades blocos protegidos if / fi, não / od e tente / yrt juntamente com ponto e vírgula ";" a declarações separadas. Excelente para listagens de revistas inequívocas ou cortar / colar a partir de páginas web.

Deve ser fácil o suficiente para escrever um programa python curto para inserir / remover os blocos de guarda e ponto e vírgula.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top