Ich bin ein völlig blinder Programmierer, der Python lernen möchte. Leider ist die Tatsache, dass Codeblöcke mit unterschiedlichen Einrückungsstufen dargestellt werden, ein großer Stolperstein. Ich habe mich gefragt, ob es Tools gibt, mit denen ich Code mit geschweiften Klammern oder einem anderen Codeblock-Trennzeichen schreiben und dieses Format dann in eine richtig eingerückte Darstellung konvertieren kann, die der Python-Interpreter verwenden kann.
python
accessibility
blind
blindness
Jared
quelle
quelle
Antworten:
Es gibt eine Lösung für Ihr Problem, die mit Python selbst verteilt wird.
pindent.py
Es befindet sich im Verzeichnis Tools \ Scripts in einer Windows-Installation (mein Pfad dazu ist C: \ Python25 \ Tools \ Scripts). Es sieht so aus, als müssten Sie es von svn.python.org abrufen, wenn Sie es ausführen Linux oder OSX.Es fügt Kommentare hinzu, wenn Blöcke geschlossen werden, oder kann Code ordnungsgemäß einrücken, wenn Kommentare eingegeben werden. Hier ist ein Beispiel für den Code, den pindent mit dem Befehl ausgibt:
pindent.py -c myfile.py
Wo das Original
myfile.py
war:Sie können auch
pindent.py -r
die richtige Einrückung basierend auf Kommentaren einfügen (lesen Sie die Kopfzeile von pindent.py für Details). Dies sollte es Ihnen ermöglichen, in Python zu codieren, ohne sich um Einrückungen kümmern zu müssen.Wenn Sie beispielsweise
pindent.py -r myfile.py
ausführen , wird der folgende Code inmyfile.py
denselben ordnungsgemäß eingerückten (und auch kommentierten) Code konvertiert, der impindent.py -c
obigen Beispiel erstellt wurde:Es würde mich interessieren, welche Lösung Sie letztendlich verwenden. Wenn Sie weitere Hilfe benötigen, kommentieren Sie diesen Beitrag und ich werde versuchen, Ihnen zu helfen.
quelle
pindent
auf flush-links - Code (die bevorzugte Vertiefung Schema vieler blinde Programmierer) könnte nützlich sein. Nützlicher wärefrom __future__ import braces
- aber nicht als Osterei.pindent.py -c
; es istpindent.py -r
. Ryan hat das bereits in ihrer Antwort bemerkt, aber ich habe es nur bearbeitet, um ein explizites Beispiel hinzuzufügen und es schwieriger zu machen, es zu übersehen. (Außerdem habe ich die Befehlszeilenoption korrigiert, um dies zu tun: Es ist-r
nicht-d
das , was nur die Kommentare entfernt.)Ich persönlich bezweifle, dass dies derzeit der Fall ist, da viele Python-Fans die Tatsache lieben, dass Python auf diese Weise durch Leerzeichen abgegrenzt ist.
Ich habe das jedoch nie als Zugänglichkeitsproblem angesehen. Vielleicht ist es etwas, das Python als Fehlerbericht vorgelegt werden kann?
Ich würde davon ausgehen, dass Sie hier jedoch einen Screenreader für die Ausgabe verwenden? Die Tabs scheinen Ihnen also "unsichtbar" zu sein? Mit einer Braille-Ausgabe ist es vielleicht einfacher zu lesen, aber ich kann genau verstehen, wie verwirrend dies sein kann.
In der Tat ist das für mich sehr interessant. Ich wünschte, ich wüsste genug, um eine App schreiben zu können, die dies für Sie erledigt.
Ich denke, es ist definitiv etwas, für das ich einen Fehlerbericht erstellen werde, es sei denn, Sie haben dies bereits selbst getan oder möchten es.
Bearbeiten: Wie von John Millikin bemerkt, gibt es auch PyBraces, die eine praktikable Lösung für Sie sein könnten und abhängig von Ihren Codierungsfähigkeiten möglicherweise zusammen gehackt werden können, um genau das zu sein, was Sie brauchen (und ich hoffe, dass dies der Fall ist , Sie geben es für andere wie Sie frei, um es zu verwenden)
Edit 2: Ich habe dies gerade dem Python Bug Tracker gemeldet
quelle
Obwohl ich nicht blind bin, habe ich gute Dinge über Emacspeak gehört . Sie haben seit ihrer Veröffentlichung von 8.0 im Jahr 1998 einen Python-Modus (sie scheinen bis zur Veröffentlichung von 28.0 zu sein!). Auf jeden Fall einen Besuch wert.
quelle
Sie sollten in der Lage sein, Ihren Editor so zu konfigurieren, dass die Tabulatoren und Leerzeichen gesprochen werden. Ich weiß, dass in den meisten Editoren Leerzeichen angezeigt werden können. Daher muss irgendwo eine Eingabehilfenoption vorhanden sein, um sie zu sprechen.
Gelingt dies nicht, gibt es Pybraces , die als praktischer Witz geschrieben wurden, aber für Sie mit ein wenig Arbeit nützlich sein könnten.
quelle
Wenn Sie unter Windows arbeiten, empfehle ich Ihnen dringend, sich EdSharp unter folgender Adresse anzusehen: http://empowermentzone.com/EdSharp.htm Es unterstützt alle führenden Windows-Bildschirmleser und kann so konfiguriert werden, dass es die Einrückungsstufen von Code spricht. oder es verfügt über ein integriertes Dienstprogramm namens PyBrace, das in und aus der Klammernsyntax konvertiert werden kann, wenn Sie dies stattdessen möchten, und es unterstützt alle Arten von anderen Funktionen, die Programmierer in unseren Texteditoren erwarten. Ich benutze es seit Jahren für alles, von PHP über JavaScript über HTML bis hin zu Python, und ich liebe es.
quelle
Ich schätze Ihr Problem, denke aber, dass Sie die Implementierung anstelle des Problems angeben, das Sie lösen müssen. Anstatt in geschweifte Klammern zu konvertieren, können Sie daran arbeiten, wie Ihr Bildschirmleser Ihnen die Einrückungsstufe anzeigt.
Zum Beispiel, einige Leute haben sich auf vim Syntax gearbeitet Färbung Python Einrückungen darzustellen. Vielleicht könnte eine modifizierte Syntaxfarbe etwas erzeugen, das Ihr Bildschirmleser lesen würde?
quelle
Alle diese "Nein, du kannst nicht" -Antworten sind wirklich ärgerlich. Natürlich kannst du.
Es ist ein Hack, aber du kannst es schaffen.
http://timhatch.com/projects/pybraces/
Verwendet eine benutzerdefinierte Codierung, um geschweifte Klammern in eingerückte Blöcke zu konvertieren, bevor sie an den Interpreter übergeben werden.
Als Nebenwirkung , und als jemand neu in Python - Ich akzeptiere nicht die Gründe nicht einmal erlaubt Zahnspange / generic Blockabgrenzern ... abgesehen davon , dass sein die Präferenz des Python Devs. Klammern werden zumindest nicht versehentlich gegessen, wenn Sie Ihren Code automatisch verarbeiten oder in einem Editor arbeiten, der nicht versteht, dass Leerzeichen wichtig sind. Wenn Sie Code automatisch generieren, ist es praktisch, die Einrückungsstufen nicht verfolgen zu müssen. Wenn Sie Python verwenden möchten, um einen perlartigen Einzeiler zu erstellen, werden Sie automatisch verkrüppelt. Wenn nichts anderes, nur als Schutz. Was ist, wenn Ihr 1000-Zeilen-Python-Programm alle Tabs verzehrt bekommt? Sie werden Zeile für Zeile gehen und herausfinden, wo die Einrückung sein sollte?
Wenn Sie danach fragen, erhalten Sie ausnahmslos eine ironische Antwort wie "Einfach aus __ zukünftigen __ Klammern importieren", "IDE richtig konfigurieren", "Es ist sowieso besser, also gewöhnen Sie sich daran" ...
Ich verstehe ihren Punkt, aber hey, wenn ich wollte, könnte ich nach jeder einzelnen Zeile ein Semikolon setzen. Ich verstehe also nicht, warum alle so unerbittlich mit der Zahnspange umgehen. Wenn Sie Ihre Sprache benötigen, um sich zum richtigen Einrücken zu zwingen, machen Sie es überhaupt nicht richtig.
Nur mein 2c - ich werde sowieso Zahnspangen verwenden.
quelle
Durchsuchte eine zugängliche Python-IDE, fand diese und entschied sich zu antworten. Unter Windows mit JAWS:
Das einzige, was für uns frustrierend ist, ist, dass wir keine Codebeispiele auf Websites genießen können (da das Sprechen mit Gedankenstrichen in Browsern nicht allzu komfortabel ist - es erzeugt überflüssige Sprache).
Viel Spaß beim Codieren von einem anderen Python-Anfänger.
quelle
Ich verwende Eclipse mit den Pydev-Erweiterungen, da es sich um eine IDE handelt, mit der ich viel Erfahrung habe. Ich schätze auch die intelligente Einrückung, die es zum Codieren von Anweisungen, Schleifen usw. bietet. Ich habe das Skript pindent.py als externes Tool konfiguriert, das ich auf dem aktuell fokussierten Python-Modul ausführen kann, das mir das Leben erleichtert, damit ich sehen kann, was es ist geschlossen, ohne ständig die Einrückung überprüfen zu müssen.
quelle
Es gibt verschiedene Antworten, die erklären, wie das geht. Aber ich würde empfehlen, diesen Weg nicht zu nehmen. Sie könnten zwar ein Skript für die Konvertierung verwenden, es würde jedoch die Arbeit an einem Teamprojekt erschweren.
Meine Empfehlung wäre, Ihren Bildschirmleser so zu konfigurieren, dass die Registerkarten angekündigt werden. Dies ist nicht so ärgerlich, wie es sich anhört, da nur "Einzug 5" statt "Tab Tab Tab Tab Tab" angezeigt wird. Darüber hinaus wird die Einrückung nur gelesen, wenn sie sich ändert, sodass Sie einen ganzen Codeblock durchlaufen können, ohne die Einrückungsstufe zu hören. Auf diese Weise ist das Hören der Einrückung nicht ausführlicher als das Hören der Klammern.
Da ich nicht weiß, welches Betriebssystem oder welchen Bildschirmleser Sie verwenden, kann ich leider nicht die genauen Schritte angeben, um dies zu erreichen.
quelle
Edsger Dijkstra verwendete if ~ fi und do ~ od in seiner "Guarded Command Language", diese scheinen aus dem Algol68 zu stammen . Es gab auch einige Beispiele für Python-geschützte Blöcke, die in RosettaCode.org verwendet wurden .
Durch Leerzeichen verstümmelter Python-Code kann eindeutig entwirrt und neu eingerückt werden, wenn geschützte Blöcke verwendet werden, wenn / fi, do / od & try / yrt zusammen mit Semikolons ";" Aussagen zu trennen. Hervorragend geeignet für eindeutige Zeitschriftenauflistungen oder zum Ausschneiden / Einfügen von Webseiten.
Es sollte einfach genug sein, ein kurzes Python-Programm zu schreiben, um die Schutzblöcke und Semikolons einzufügen / zu entfernen.
quelle