문제

저는 Python을 배우고 싶은 완전히 눈이 먼 프로그래머입니다.불행하게도 코드 블록이 서로 다른 들여쓰기 수준으로 표현된다는 사실이 주요 걸림돌입니다.중괄호나 다른 코드 블록 구분 기호를 사용하여 코드를 작성한 다음 해당 형식을 Python 인터프리터가 사용할 수 있는 적절하게 들여쓰기된 표현으로 변환할 수 있는 도구가 있는지 궁금합니다.

도움이 되었습니까?

해결책

Python 자체와 함께 배포되는 문제에 대한 해결책이 있습니다. pindent.py, Windows 설치의 Tools\Scripts 디렉터리에 있습니다(내 경로는 C:\Python25 ools\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

최종적으로 어떤 솔루션을 사용하게 되는지 알고 싶습니다. 추가 지원이 필요한 경우 이 게시물에 댓글을 남겨주시면 도와드리겠습니다.

다른 팁

많은 Python 애호가들이 Python이 공백으로 구분되는 방식이라는 사실을 좋아하기 때문에 나는 개인적으로 현재 그런 일이 있는지 의심합니다.

그러나 나는 실제로 그것을 접근성 문제로 생각해 본 적이 없습니다.어쩌면 Python에 버그 보고서로 제출할 내용일까요?

그러나 여기에서는 출력을 위해 스크린 리더를 사용한다고 가정합니까?그러면 탭이 "보이지 않는" 것처럼 보일까요?점자 출력을 사용하면 읽기가 더 쉬울 수 있지만 이것이 얼마나 혼란스러울 수 있는지 정확히 이해할 수 있습니다.

사실 이것은 나에게 매우 흥미로운 일이다.나는 당신을 위해 이 작업을 수행할 앱을 작성할 수 있을 만큼 충분히 알고 있었으면 좋겠습니다.

내 생각에는 여러분이 이미 버그 보고서를 작성했거나 원하지 않는 한 버그 보고서에 넣을 것이 분명하다고 생각합니다.

편집하다:또한 다음과 같이 유명한 ~에 의해 존 밀리킨 도 있습니다 PyBrace 이는 귀하에게 실행 가능한 솔루션이 될 수 있으며 귀하의 코딩 기술에 따라 정확히 필요한 것이 되기 위해 함께 해킹될 수도 있습니다. (그리고 그렇다면 귀하와 같은 다른 사람들이 사용할 수 있도록 공개하시기 바랍니다.)

편집 2:난 방금 이것을 보고했다 파이썬 버그 추적기에

나는 시각 장애인은 아니지만 좋은 소식을 들었습니다. Emacs말.그들은 Python 모드를 처음부터 사용했습니다. 8.0 릴리스 1998년(28.0까지 출시된 것 같습니다!)확실히 확인해 볼 가치가 있습니다.

탭과 공백을 말하도록 편집기를 구성할 수 있어야 합니다. 표시하다 대부분의 편집기에는 공백이 있으므로 이를 말할 수 있는 접근성 옵션이 있어야 합니다.

실패하면 pybraces, 이는 장난으로 작성되었지만 약간의 작업을 수행하면 실제로 유용할 수 있습니다.

Windows를 사용하는 경우 다음에서 EdSharp를 살펴보는 것이 좋습니다.http://empowermentzone.com/EdSharp.htm이는 모든 주요 Windows 스크린리더를 지원하고, 코드의 들여쓰기 수준을 말하도록 구성할 수 있습니다. 또는 대신 원하는 경우 중괄호 구문 간에 변환할 수 있는 PyBrace라는 유틸리티가 내장되어 있으며 모든 것을 지원합니다. 프로그래머가 텍스트 편집기에서 기대하는 다른 기능도 있습니다.저는 PHP에서 JavaScript, HTML, Python에 이르기까지 모든 작업에 수년간 사용해 왔으며 정말 좋아합니다.

귀하의 문제는 감사하지만 해결해야 할 문제 대신 구현을 지정하고 있다고 생각합니다.중괄호로 변환하는 대신 화면 판독기가 들여쓰기 수준을 알려주는 방법을 연구하는 것은 어떻습니까?

예를 들어, 어떤 사람들은 Python 들여쓰기 수준을 나타내기 위해 vim 구문 색상 지정 작업을 수행했습니다.아마도 수정된 구문 색상 지정을 통해 화면 판독기가 읽을 수 있는 내용을 생성할 수 있을까요?

이러한 "아니요, 할 수 없습니다" 유형의 답변은 모두 정말 짜증납니다.물론 당신은 할 수.

해킹이지만 할 수 있습니다.

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

인터프리터에 전달하기 전에 사용자 정의 인코딩을 사용하여 중괄호를 들여쓰기된 블록으로 변환합니다.


여담으로, 그리고 파이썬을 처음 접하는 사람으로서 저는 그 이유를 받아들이지 않습니다. 허용 중괄호/일반 블록 구분 기호...그 외에는 Python 개발자가 선호하는 것입니다.코드를 자동으로 처리하거나 공백이 중요하다는 것을 이해하지 못하는 편집기에서 작업하는 경우 적어도 중괄호가 실수로 먹히지는 않을 것입니다.코드를 자동으로 생성하는 경우 들여쓰기 수준을 추적할 필요가 없는 것이 편리합니다.Python을 사용하여 Perl과 같은 한 줄짜리 작업을 수행하려는 경우 자동으로 장애가 발생합니다.다른 것이 없다면 보호 장치로 사용됩니다.1000줄의 Python 프로그램이 탭을 모두 먹어치우면 어떻게 될까요?한 줄씩 살펴보고 들여쓰기가 어디에 있어야 하는지 알아내시겠습니까?

이에 대해 물어보면 "그냥 'from __ future __ import 괄호'를 수행하세요", "IDE를 올바르게 구성하세요", "어차피 더 낫습니다. 익숙해지세요"와 같은 냉담한 대답을 듣게 될 것입니다.

그들의 요점은 알지만, 내가 원한다면 매 줄마다 세미콜론을 넣을 수 있습니다.그래서 나는 왜 모두가 교정기에 대해 그렇게 단호한지 ​​이해하지 못합니다.적절하게 들여쓰기를 하기 위해 언어가 필요하다면 애초에 제대로 들여쓰기를 하고 있지 않은 것입니다.

내 2c만 - 어쨌든 교정기를 사용할 예정입니다.

접근 가능한 Python IDE를 검색하다가 이것을 발견하고 답변하기로 결정했습니다.JAWS가 있는 Windows에서:

  1. 를 눌러 설정 센터로 이동하세요. 죠스키+6 (문자 위의 숫자 행) 즐겨 사용하는 텍스트 편집기에서.JAWS가 새 구성 파일을 생성하라는 메시지를 표시하면 동의합니다.
  2. 검색창에 "indent"를 입력하세요.
  3. 결과는 하나뿐입니다."들여쓰기 문자를 말하세요."이것을 켜십시오.
  4. 즐기다!

우리에게 실망스러운 유일한 점은 웹 사이트에서 코드 예제를 즐길 수 없다는 것입니다(브라우저에서 들여쓰기 말하기가 너무 편안하지 않기 때문에 불필요한 음성이 생성됩니다).

다른 Python 초보자의 즐거운 코딩).

나는 경험이 많은 IDE이기 때문에 pydev 확장과 함께 Eclipse를 사용합니다.또한 if 문, 루프 등을 코딩하기 위해 제공되는 스마트 들여쓰기에 감사드립니다.pindent.py 스크립트를 현재 초점을 맞춘 Python 모듈에서 실행할 수 있는 외부 도구로 구성했습니다. 이렇게 하면 들여쓰기를 계속 확인하지 않고도 닫힌 부분이 어디인지 확인할 수 있습니다.

이를 수행하는 방법을 설명하는 다양한 답변이 있습니다.그러나 나는 이 길을 택하지 않는 것을 권하고 싶다.스크립트를 사용하여 변환을 수행할 수는 있지만 팀 프로젝트 작업을 어렵게 만들 수 있습니다.

제가 추천하는 것은 탭을 알리도록 스크린 리더를 구성하는 것입니다."탭 탭 탭 탭 탭"이 아닌 "들여쓰기 5"만 표시되기 때문에 들리는 것만큼 짜증나지는 않습니다.게다가 들여쓰기는 변경될 때마다 읽혀지므로 들여쓰기 수준을 듣지 않고도 전체 코드 블록을 살펴볼 수 있습니다.이런 식으로 들여쓰기를 듣는 것은 중괄호를 듣는 것보다 더 장황하지 않습니다.

어떤 운영 체제나 스크린 리더를 사용하시는지 모르기 때문에 안타깝게도 이를 달성하기 위한 정확한 단계를 알려드릴 수 없습니다.

에드저 다익스트라 사용된 만약 ~ fi라면 그리고 ~하다 그의 "보호 명령 언어"에서 이러한 언어는 알골68.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)

Shitespace Mangled Python 코드는/fi, do/od & try/yrt와 함께 보호 블록을 사용하는 경우, 명백히 방해받지 않고 다시 표시 할 수 있습니다. ";" 진술을 분리합니다.명확한 잡지 목록이나 웹 페이지에서 잘라내기/붙여넣기에 적합합니다.

가드 블록과 세미콜론을 삽입/제거하는 짧은 Python 프로그램을 작성하는 것은 충분히 쉬워야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top