Я совершенно слепой программист, который хотел бы изучить Python. К сожалению, тот факт, что блоки кода представлены с разными уровнями отступов, является серьезным камнем преткновения. Мне было интересно, есть ли какие-либо инструменты, которые позволили бы мне написать код, используя фигурные скобки или какой-либо другой разделитель блоков кода, а затем преобразовать этот формат в представление с правильным отступом, которое мог бы использовать интерпретатор Python?
python
accessibility
blind
blindness
Джаред
источник
источник
Ответы:
Есть решение вашей проблемы, которое распространяется с самим python.
pindent.py
, он находится в каталоге Tools \ Scripts в установке Windows (мой путь к нему - C: \ Python25 \ Tools \ Scripts), похоже, вам придется взять его с svn.python.org, если вы работаете на Linux или OSX.Он добавляет комментарии, когда блоки закрываются, или может правильно отступать от кода, если они вставлены. Вот пример кода, выводимого pindent с помощью команды:
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
Где был оригинал
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!'
Вы также можете использовать
pindent.py -r
для вставки правильного отступа на основе комментариев (подробности см. В заголовке pindent.py), это должно позволить вам писать код на Python, не беспокоясь об отступах.Например, запуск
pindent.py -r myfile.py
преобразует следующий код вmyfile.py
тот же код с правильным отступом (а также с комментариями), как вpindent.py -c
приведенном выше примере: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
Мне было бы интересно узнать, какое решение вы в конечном итоге используете. Если вам потребуется дополнительная помощь, прокомментируйте этот пост, и я постараюсь помочь.
источник
pindent
кода слева направо (предпочтительная схема отступов для многих слепых программистов) . Полезнее было бы - но не в качестве пасхального яйца.from __future__ import braces
pindent.py -c
; этоpindent.py -r
. Райан уже отметил это в своем ответе, но я просто отредактировал его, чтобы добавить явный пример, чтобы его было труднее пропустить. (Кроме того, я исправил параметр командной строки, чтобы сделать это: он-r
, а не тот,-d
который просто удаляет комментарии.)Я лично сомневаюсь, что в настоящее время есть, поскольку многим поклонникам Python нравится тот факт, что Python является таким, разделенным пробелами.
Однако я никогда не думал об этом как о проблеме доступности. Может быть, это что-то вроде сообщения об ошибке для Python?
Я предполагаю, что вы используете здесь программу чтения с экрана для вывода? Значит, вкладки кажутся вам «невидимыми»? С выводом шрифтом Брайля его будет легче читать, но я могу точно понять, насколько это может сбивать с толку.
На самом деле мне это очень интересно. Мне жаль, что я знал достаточно, чтобы написать приложение, которое сделает это за вас.
Я думаю, что это определенно то, для чего я добавлю отчет об ошибке, если вы еще не сделали это сами или не хотите.
Edit: Кроме того , как отмечено на Джона Милликин Существует также PyBraces Какой может быть жизнеспособным решением для вас, и может быть возможным быть взломана вместе в зависимости от ваших кодирования навыков , чтобы быть именно то , что вам нужно (и я надеюсь , что если это так , вы выпускаете его для использования другими, такими же, как вы)
Изменить 2: я только что сообщил об этом в трекер ошибок Python
источник
Хотя я не слепой, я слышал много хорошего об Emacspeak . У них был режим Python с момента их выпуска 8.0 в 1998 году (похоже, они до выпуска 28.0!). Определенно стоит проверить.
источник
Вы должны иметь возможность настроить свой редактор так, чтобы он произносил табуляции и пробелы - я знаю, что это возможно в большинстве редакторов отображать пробелы, поэтому где-то должна быть опция доступности, чтобы озвучивать их.
В противном случае есть pybraces , который был написан как розыгрыш , но на самом деле может быть вам полезен после небольшой работы.
источник
Если вы используете Windows, я настоятельно рекомендую вам взглянуть на EdSharp по адресу: http://empowermentzone.com/EdSharp.htm Он поддерживает все ведущие программы чтения с экрана Windows, его можно настроить для озвучивания уровней отступов кода, или у него есть встроенная утилита PyBrace, которая может преобразовывать синтаксис фигурных скобок и обратно, если вы хотите это сделать, и поддерживает все виды других функций, которые программисты ожидают от наших текстовых редакторов. Я использую его в течение многих лет для всего, от PHP до JavaScript и HTML и Python, и мне это нравится.
источник
Я ценю вашу проблему, но думаю, что вы указываете реализацию, а не проблему, которую нужно решить. Вместо преобразования в фигурные скобки, как насчет того, чтобы программа чтения с экрана сообщала вам уровень отступа?
Например, некоторые люди работали над раскраской синтаксиса vim для представления уровней отступов Python. Возможно, измененная раскраска синтаксиса может дать вам то, что прочитает ваш экранный ридер?
источник
Все эти типы ответов типа «нет, ты не можешь» действительно раздражают. Конечно вы можете.
Это взлом, но вы можете это сделать.
http://timhatch.com/projects/pybraces/
использует настраиваемую кодировку для преобразования фигурных скобок в блоки с отступом перед передачей их интерпретатору.
Как и в сторону, и как кто - то нового к питона - я не принимаю рассуждения позади даже не позволяя фигурные скобки / общие блочные разделители ... кроме того быть предпочтение питона дэвов. По крайней мере, фигурные скобки не будут съедены случайно, если вы выполняете автоматическую обработку своего кода или работаете в редакторе, который не понимает, что пробелы важны. Если вы генерируете код автоматически, удобно не отслеживать уровни отступов. Если вы хотите использовать python для создания однострочника в стиле Perl, вы автоматически испортитесь. По крайней мере, в качестве гарантии. Что, если ваша 1000-строчная программа на Python съедает все свои вкладки? Вы собираетесь построчно выяснять, где должен быть отступ?
Если спросить об этом, вы всегда получите насмешливый ответ вроде «просто сделай 'из __ future __ import braces'», «правильно настройте свою IDE», «в любом случае лучше, так что привыкай» ...
Я понимаю их точку зрения, но, эй, если бы я хотел, я мог бы поставить точку с запятой после каждой строки. Поэтому я не понимаю, почему все так категорично относятся к брекетам. Если вам нужен ваш язык, чтобы заставить вас делать отступы правильно, вы в первую очередь делаете это неправильно.
Только мой 2с - я все равно буду использовать подтяжки.
источник
Поискав доступную Python IDE, нашел это и решил ответить. Под Windows с JAWS:
Единственное, что нас расстраивает, это то, что мы не можем наслаждаться примерами кода на веб-сайтах (поскольку использование отступов в браузерах не слишком удобно - оно генерирует лишнюю речь).
Удачного кодирования от другого новичка в Python).
источник
Я использую eclipse с расширениями pydev, поскольку это IDE, с которой у меня большой опыт. Я также ценю интеллектуальные отступы, которые он предлагает для кодирования операторов if, циклов и т. Д. Я настроил скрипт pindent.py как внешний инструмент, который я могу запускать на текущем модуле python, который упрощает мою жизнь, чтобы я мог видеть, что закрыто, где нет необходимости постоянно проверять отступ.
источник
Есть разные ответы, объясняющие, как это сделать. Но я бы рекомендовал не идти по этому пути. Хотя вы можете использовать сценарий для преобразования, это затруднит работу над командным проектом.
Я бы порекомендовал настроить программу чтения с экрана так, чтобы она сообщала о вкладках. Это не так раздражает, как может показаться, поскольку в нем будет написано только «отступ 5», а не «вкладка вкладка вкладка вкладка». Кроме того, отступ будет считываться только при его изменении, поэтому вы можете пройти через весь блок кода, не слыша уровень отступа. Таким образом, прослушивание отступа не более многословно, чем прослушивание фигурных скобок.
Поскольку я не знаю, какую операционную систему или программу чтения с экрана вы используете, я, к сожалению, не могу дать точных шагов для достижения этой цели.
источник
Эдсгер Дейкстра использовал if ~ fi и do ~ od в своем «Защищенном командном языке», они, по-видимому, происходят из Алгола68 . Также в RosettaCode.org использовалось несколько примеров защищенных блоков Python .
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)
Искаженный пробелами код Python можно однозначно распутать и изменить отступ, если использовать защищенные блоки if / fi, do / od & try / yrt вместе с точкой с запятой ";" разделить заявления. Отлично подходит для однозначных списков журналов или вырезания / вставки с веб-страниц.
Должно быть достаточно легко написать короткую программу на Python для вставки / удаления защитных блоков и точек с запятой.
источник