Есть ли способ преобразовать отступ в коде Python в фигурные скобки?

Я абсолютно слепой программист, который хотел бы изучать Python. К сожалению, тот факт, что кодовые блоки представлены с разными уровнями отступов, является основным камнем преткновения. Мне было интересно, есть ли какие-либо инструменты, которые позволили бы мне писать код, используя фигурные скобки или какой-либо другой разделитель блока кода, а затем преобразовывать этот формат в правильно с отступом представление, которое может использовать интерпретатор Python?

77 голосов | спросил Jared 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 05:33:13 +0400 2008, 05:33:13

12 ответов


0

Есть решение вашей проблемы, которое распространяется с самим питоном. pindent.py, он находится в каталоге Tools \ Scripts в установке Windows (мой путь к нему - C: \ Python25 \ Tools \ Scripts) Похоже, вы бы взяли его с svn.python.org, если вы работаете в Linux или OSX.

Он добавляет комментарии, когда блоки закрыты, или может правильно сделать отступ для кода, если комментарии вставлены. Вот пример кода, выведенного командой pindent с помощью команды:

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

Где был исходный 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 -d для вставки правильного отступа на основе комментариев (подробнее см. заголовок pindent.py), это должен позволять вам кодировать на python, не беспокоясь об отступах.

Мне было бы интересно узнать, какое решение в итоге вы используете, если вам потребуется дополнительная помощь, прокомментируйте этот пост, и я постараюсь помочь.

ответил Ryan 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 06:04:01 +0400 2008, 06:04:01
0

Python поддерживает фигурные скобки для определения блоков кода, а также поддерживает использование тегов 'begin' и 'end'.

Пожалуйста, посмотрите эти примеры кода:

class MyClass(object): #{
    def myfunction(self, arg1, arg2): #{
        for i in range(arg1): #{ 
            print i
        #}
    #}
#}

И пример со стилем 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

Лучшее в этом то, что вы можете забыть поставить закрывающую скобку, и это все еще допустимый питон!

class MyClass(object): #{
    def myfunction(self, arg1, arg2): #{
        for i in range(arg1): #{ 
            print i
        # whoops, forgot to close that bracket!
    #}
#}

оригинальный кляп

Мой реальный совет - получить дисплей Брайля, если вы можете позволить себе одного /одного источника - слепые программисты-Python моего знакомого действительно нашли дисплей Брайля незаменимым для написания программ на Python, он делает процесс отступов гораздо менее болезненным. Дисплей на 40 ячеек того стоит.

ответил Jerub 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 06:02:25 +0400 2008, 06:02:25
0

Лично я сомневаюсь, что в настоящее время это происходит, так как многие поклонники Python любят тот факт, что Python - это именно тот путь, с пробелами.

Однако я никогда не думал об этом как о проблеме доступности. Может быть, это что-то выдвинуть как отчет об ошибке в Python?

Я бы предположил, что вы используете здесь программу чтения с экрана для вывода? Значит вкладки показались бы вам "невидимыми"? С выводом Брайля это может быть легче читать, но я могу точно понять, насколько это может сбить с толку.

На самом деле, это очень интересно для меня. Мне бы хотелось, чтобы я знал достаточно, чтобы написать приложение, которое сделает это за вас.

Я думаю, что это определенно то, что я добавлю в отчет об ошибках, если вы сами этого не сделали или не хотите.

Изменить: также, как отмечено Джон Милликин Также есть PyBraces , которые могут быть жизнеспособными решение для вас, и может быть возможно быть взломанным вместе, в зависимости от ваших навыков кодирования, чтобы быть именно тем, что вам нужно (и я надеюсь, что в этом случае вы выпустите его для других, как вы, чтобы использовать)

Изменить 2. Я только что сообщил об этом средству отслеживания ошибок Python

ответил Mez 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 05:35:23 +0400 2008, 05:35:23
0

Хотя я не слепой, я слышал хорошие новости о Emacspeak . У них был режим Python с момента их 8.0 выпуска в 1998 году быть до релиза 28.0!). Определенно стоит проверить.

ответил technomalogical 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 05:51:53 +0400 2008, 05:51:53
0

Вы должны иметь возможность настроить свой редактор так, чтобы он произносил табуляции и пробелы - я знаю, что в большинстве редакторов отображать пробелы можно, поэтому где-то должна быть опция доступности, чтобы о них говорить.

В противном случае существует pybraces , который был написан как практическая шутка, но на самом деле может быть полезно для вас с небольшим количеством работы.

ответил John Millikin 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 05:38:10 +0400 2008, 05:38:10
0

Если вы работаете в Windows, я настоятельно рекомендую вам взглянуть на EdSharp: http://empowermentzone.com/EdSharp.htm Он поддерживает все ведущие программы чтения с экрана Windows, может быть настроен на использование уровней отступа кода или имеет встроенную утилиту PyBrace, которая может преобразовывать в синтаксис скобок и обратно, если вы хотите сделать это вместо этого, и поддерживает все В наших текстовых редакторах ожидаются и другие функции. Я использую его годами для всего: от PHP до JavaScript, от HTML до Python, и мне это нравится.

ответил fastfinge 8 42012vEurope/Moscow11bEurope/MoscowThu, 08 Nov 2012 19:40:12 +0400 2012, 19:40:12
0

Я ценю вашу проблему, но думаю, что вы указываете реализацию, а не проблему, которую нужно решить. Вместо того, чтобы переходить в фигурные скобки, как насчет того, чтобы ваш читатель экрана мог сказать вам уровень отступа?

Например, некоторые люди работали над окраской синтаксиса vim для представляют уровни отступов Python. Возможно, измененная синтаксическая раскраска может привести к тому, что ваш читатель экрана будет читать?

ответил andy 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 05:43:21 +0400 2008, 05:43:21
0

Все эти ответы типа "нет, ты не можешь" действительно раздражают. Конечно, вы можете.

Это взлом, но вы можете сделать это.

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

использует пользовательскую кодировку для преобразования фигурных скобок в блоки с отступами перед передачей их интерпретатору.


Как в стороне, так и как кто-то новичок в python - я не согласен с тем, что даже не разрешает фигурные скобки /общие разделители блоков ... кроме того, что это предпочтение разработчиков Python , Брекеты, по крайней мере, не будут съедены случайно, если вы выполняете некоторую автоматическую обработку своего кода или работаете в редакторе, который не понимает, что пробелы важны. Если вы генерируете код автоматически, удобно не отслеживать уровни отступов. Если вы хотите использовать python для создания однострочного perl-esque, вы автоматически наносите вред. Если ничего другого, просто как гарантия. Что делать, если ваша 1000-строчная программа Python получает все свои вкладки? Вы собираетесь идти построчно и выяснять, где должен быть отступ?

Когда вы спросите об этом, вы получите непроизвольный ответ типа «просто сделайте» из __future__ импорт скобок »,« правильно сконфигурируйте свою IDE »,« в любом случае лучше, так что привыкните »...

Я понимаю их точку зрения, но, если бы я захотел, я мог бы поставить точку с запятой после каждой строки. Так что я не понимаю, почему все так категорично относятся к фигурным скобкам. Если вам нужен ваш язык, чтобы заставить вас делать отступы правильно, вы, в первую очередь, делаете это неправильно.

Просто мой 2c - я все равно собираюсь использовать фигурные скобки.

ответил la11111 8 J000000Sunday12 2012, 13:42:09
0

Я использую eclipse с расширениями pydev, поскольку это IDE, с которой у меня большой опыт работы. Я также ценю умные отступы, которые он предлагает для кодирования операторов if, циклов и т. Д. Я настроил сценарий pindent.py как внешний инструмент, который я могу запускать на текущем модуле python, который облегчает мою жизнь, чтобы я мог видеть, что закрыто, где без необходимости постоянно проверять отступы.

ответил Jared 26 +04002008-10-26T00:06:08+04:00312008bEurope/MoscowSun, 26 Oct 2008 00:06:08 +0400 2008, 00:06:08
0

Поиск доступной Python IDE, нашел это и решил ответить. Под Windows с JAWS:

  1. Перейдите в Центр настроек, нажав JawsKey + 6 (в строке чисел над буквами) в вашем любимом текстовом редакторе. Если JAWS предложит создать новый файл конфигурации, согласитесь.
  2. В поле поиска введите "отступ"
  3. Результат будет только один: "Произнесите отступные символы". Включите это.
  4. Наслаждайтесь!

Единственное, что нас огорчает, это то, что мы не можем наслаждаться примерами кода на веб-сайтах (так как отступ в браузерах не слишком удобен - он генерирует лишнюю речь).

Удачного кодирования от другого новичка в Python).

ответил Andre Polykanine 17 AM00000030000004631 2012, 03:34:46
0

Существуют различные ответы, объясняющие, как это сделать. Но я бы порекомендовал не идти по этому маршруту. Хотя вы можете использовать сценарий для преобразования, это затруднит работу над командным проектом.

Я бы порекомендовал настроить программу чтения с экрана для объявления вкладок. Это не так раздражает, как кажется, так как в нем будет только «отступ 5», а не «вкладка вкладка вкладка вкладка вкладка». Кроме того, отступ будет считываться только тогда, когда он изменился, так что вы можете пройти весь блок кода, не слыша уровень отступа. Таким образом, слышать отступы не более многословно, чем слышать скобки.

Поскольку я не знаю, какую операционную систему или программу чтения с экрана вы используете, я, к сожалению, не могу дать точных шагов для ее достижения.

ответил Saqib 17 Jpm1000000pmSat, 17 Jan 2009 21:49:29 +030009 2009, 21:49:29
0

Эдсгер Дейкстра использовал if ~ fi и do ~ od в его" защищенном командном языке ", похоже, они происходят из Algol68 . В 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 для вставки /удаления защитных блоков и точек с запятой.

ответил NevilleDNZ 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 26 Sep 2009 02:36:33 +0400 2009, 02:36:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132