Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Там есть решение вашей проблемы, которое распространяется вместе с самим python. 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, не беспокоясь о отступе.

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

Ответ 2

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

См. примеры кода:

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

И пример с bash style:

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

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

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

оригинальная заглавная страница

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

Ответ 3

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

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

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

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

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

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

Изменить 2: Я просто сообщил об этом в отладчик ошибок python

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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

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

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


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

Просьба об этом всегда будет иметь щекотливый ответ вроде "просто сделать" из __ будущего __ импортных скобок "," правильно настроить вашу среду IDE "," все равно так привыкнуть к этому "...

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

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

Ответ 9

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

Ответ 10

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

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

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

Счастливое кодирование от другого начинающего Python).

Ответ 11

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

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

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

Ответ 12

Edsger Dijkstra использовал если ~ fi и do ~ od в его "Защищенном командном языке", они, как представляется, происходят из Algol68. Были также некоторые блоки, защищенные python, используемые в 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)

Пропущенный закодированный код python может быть однозначно неперечисленным и повторно заново, если вы используете защищенные блоки, если /fi, do/od и try/yrt вместе с точкой с запятой ";" для разделения заявлений. Отлично подходит для однозначных списков журналов или вырезания/вставки с веб-страниц.

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