Frage

Ich bin ein völlig blind Programmierer, der Python lernen möchten. Leider ist die Tatsache, dass Codeblöcke mit verschiedenen Ebenen der Vertiefung dargestellt werden, ist ein großer Stolperstein. Ich frage mich, ob es irgendwelche Werkzeuge zur Verfügung standen, die mir erlauben, Code zu schreiben, Klammern oder einen anderen Code-Block Trennzeichen verwendet und dann das Format in eine ordnungsgemäß gegliederte Darstellung umwandeln, dass der Python-Interpreter verwenden könnte?

War es hilfreich?

Lösung

Es gibt eine Lösung für Ihr Problem, das mit Python selbst verteilt wird. pindent.py, es im Tools \ Scripts-Verzeichnis in einem Windows installieren gelegen ist (mein Pfad ist C: \ Python25 \ Tools \ Scripts), es sieht aus wie Sie auf packt es aus svn.python.org , wenn Sie unter Linux oder OSX laufen.

Es fügt Kommentare, wenn Blöcke geschlossen sind, oder richtig indent Code kann, wenn Kommentare in sind setzen Hier ist ein Beispiel für die von pindent ausgegeben Code mit dem Befehl:.

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

Wenn das ursprüngliche myfile.py ist:

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!'

Sie können auch pindent.py -r verwenden, um die richtige Vertiefung auf Kommentare basierend einzufügen (lesen den Header pindent.py für weitere Details), dies sollte Ihnen ermöglichen, in Python zu codieren, ohne sich um Einzug besorgniserregend.

Zum Beispiel pindent.py -r myfile.py ausgeführt wird den folgenden Code in myfile.py in derselben richtig eingezogen (und auch kommentiert) Code umwandeln, wie oben durch das pindent.py -c Beispiel erzeugt:

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

würde ich daran interessiert zu erfahren, welche Lösung Sie am Ende mit, wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte einen Kommentar zu diesem Beitrag und ich werde versuchen zu helfen.

Andere Tipps

Ich persönlich bezweifle, dass es zur Zeit im Moment, wie viele der Python afficionados liebe die Tatsache, dass Python diese Art und Weise ist, Leerzeichen begrenzt.

Ich habe eigentlich nie darüber nachgedacht, dass als Zugänglichkeit Problem jedoch. Vielleicht ist es etwas nach vorne als Fehlerbericht zu Python setzen?

Ich würde davon ausgehen, dass Sie einen Screenreader für die Ausgabe hier jedoch verwenden? So sind die Tabs würde „unsichtbar“ Sie scheinen? Mit einer Brailleausgabe, könnte es einfacher sein zu lesen, aber ich kann verstehen, genau wie verwirrend dies sein könnte.

In der Tat, das ist für mich sehr interessant. Ich wünsche, dass ich genug wusste der Lage sein, eine App zu schreiben, die dies für Sie tun.

Ich denke, es ist auf jeden Fall etwas, das ich in einem Bug-Report stellen würde für, wenn Sie bereits so selbst getan haben, oder will.

Edit: Auch als bemerkt von John Millikin Es gibt auch PyBraces , die eine tragfähige könnte sein, Lösung für Sie, und kann möglich sein, zusammen abhängig werden auf Ihre Programmierkenntnisse gehackt genau das sein, was Sie brauchen (und ich hoffe, dass, wenn das der Fall ist, können Sie es freigeben für andere aus wie Sie selbst verwenden)

Edit 2: Ich habe gerade berichtet diese auf die Python Bug-Tracker

Obwohl ich nicht blind bin, ich habe gute Dinge gehört über Emacspeak . Sie haben einen Python-Modus, da ihre rel="noreferrer"> (sie scheinen sein bis 28,0 zu lösen!). Auf jeden Fall einen Besuch wert.

Wenn Sie unter Windows sind, dann empfehle ich Ihnen einen Blick auf EdSharp nehmen aus: http://empowermentzone.com/EdSharp.htm Es unterstützt alle führenden Windows-Screenreader kann so konfiguriert werden, um die Einrückungen von Code zu sprechen, oder es in Dienstprogramm eine eingebaute hat PyBrace genannt, die zu und von Klammern Syntax umwandeln können, wenn Sie, dass stattdessen tun wollen, und es unterstützt alle Arten von anderen Funktionen Programmierer haben sich in unserem Text-Editoren erwarten. Ich habe es seit Jahren verwendet wird, für alles von PHP JavaScript Python zu HTML, und ich liebe es.

Ich schätze Ihr Problem, aber denken Sie die Implementierung anstatt das Problem, das Sie lösen müssen angeben. Statt zu Zahnspange Umwandlung, wie etwa für den Screenreader auf eine Art und Weise arbeiten Ihnen die Einzugsebene zu erzählen?

Zum Beispiel einige Leute gearbeitet haben, auf vim Syntax Färbung repräsentieren python Einrückungen. Vielleicht eine modifizierte Syntaxfärbung etwas Screenreader lesen würde produzieren könnte?

Alle diese „no man kann nicht“ Arten von Antworten sind wirklich ärgerlich. Natürlich können Sie das.

Es ist ein Hack, aber Sie können es tun.

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

verwendet eine benutzerdefinierte Codierung Klammern gegliederte Blöcke zu konvertieren, bevor es aus dem Interpreter übergeben.


Als Nebenwirkung, und als jemand neu in Python - Ich akzeptiere nicht, die Gründe für nicht einmal erlaubt Klammern / generic Blockabgrenzern ... abgesehen davon, dass seine der Präferenz des Python Devs . Zahnspange zumindest nicht gefressen aus Versehen, wenn Sie einige automatische Verarbeitung des Codes tun oder in einem Editor arbeiten, die nicht verstehen, dass weißer Raum wichtig ist. Wenn Sie Code automatisch sind zu erzeugen, ist es praktisch, um nicht der Überblick über Einzugsebene zu halten zu haben. Wenn Sie möchten, Python verwenden, um ein Perl-artige Einzeiler zu tun, werden Sie automatisch gelähmt. Wenn nichts anderes, nur als Schutz. Was passiert, wenn Ihr 1000 Zeile Python-Programm wird gegessen alle seine Tabs? Du wirst line-by-line gehen und herauszufinden, wo das Einrücken sein sollte?

darüber Vorstellung wird unweigerlich eine tongue-in-cheek bekommen Antwort wie „just do‚von __ __ Zukunft Import Zahnspange‘“, „konfigurieren Sie Ihre IDE richtig“, „es ist sowieso besser so daran gewöhnen“ ...

Ich sehe ihren Punkt, aber hey, wenn ich will, ich ein Semikolon nach jeder einzelnen Zeile setzen könnte. So verstehe ich nicht, warum alle so unerbittlich über die Zahnspange Sache. Wenn Sie Ihre Sprache müssen Sie richtig einrücken zu zwingen, du bist es nicht richtig in erster Linie zu tun.

Just my 2c - ich werde sowieso Klammern verwenden,

.

Sie suchen einen zugänglichen Python IDE, fanden diese und beschlossen, zu beantworten. Unter Windows mit JAWS:

    Gehen Sie
  1. Sie auf Einstellungen durch Drücken von JawsKey + 6 (auf der Zahlenreihe über den Buchstaben) in Ihrem bevorzugten Texteditor. Wenn JAWS fordert eine neue Konfigurationsdatei zu erstellen, zustimmen.
  2. in das Suchfeld, geben Sie "indent"
  3. Es wird nur ein Ergebnis sein: „Sagen Sie indent Zeichen“. Schalten Sie diese Option.
  4. Genießen Sie!

Das einzige, was für uns frustrierend ist, dass wir nicht Code-Beispiele auf Webseiten (da indent Sprechen in Browsern nicht zu bequem ist - es erzeugt überflüssige Sprache) genießen können.

Happy-Codierung von einem anderen Python Anfänger).

Ich verwende Eclipse mit den pydev Erweiterungen, da es eine IDE, das ich mit viel Erfahrung haben. Ich schätze auch den Smart-Einzug es für die Codierung, wenn Anweisungen bietet, Schleifen etc. ich das pindent.py Skript als externes Tool konfiguriert habe, dass ich auf dem aktuell fokussierten Python-Modul ausgeführt werden kann, die leichter macht mein Leben so kann ich sehen, was ist geschlossen, wo mit, die aus ständig Vertiefung überprüfen.

Es gibt verschiedene Antworten erklären, wie dies zu tun. Aber ich würde empfehlen, diesen Weg nicht nehmen. Während Sie ein Skript verwenden, könnten die Umwandlung zu tun, es wäre es schwer zu machen, auf einem Team-Projekt zu arbeiten.

Meine Empfehlung wäre, Ihre Bildschirmleser zu konfigurieren, um die Registerkarten zu verkünden. Das ist nicht so ärgerlich, wie es klingt, da es nur „Spiegelstrich 5“ statt „tab tab tab tab Tab“ sagen würde. Darüber hinaus würde die Vertiefung nur gelesen werden, wenn es geändert wird, so könnte man einen ganzen Block von Code durchlaufen, ohne Anhörung der Einrückungsebene. Auf diese Weise Gehör ist die Vertiefung nicht ausführlicher als die Klammern zu hören.

Wie ich weiß nicht, welches Betriebssystem oder Bildschirmleser du kann ich nicht den genauen Schritte, um dies zu erreichen gebe leider verwenden.

Edsger Dijkstra verwendet wenn ~ fi und tun ~ od in seiner "Bewacht Command Language", erscheinen diese stammen aus dem Algol68 . Es gab auch einige Beispiel Python bewacht Blöcke verwendet in 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)

Leer verstümmelter Python-Code eindeutig unmangled sein und reindented wenn man Anwendungen bewacht Blöcke wenn / fi, / od tun und versuchen / yrt zusammen mit Semikolons „;“ zu trennen Aussagen. Ausgezeichnet für eindeutige Magazin Inserate oder Ausschneiden / Einfügen von Web-Seiten.

Es sollte einfach genug sein, um ein kurzes Python-Programm zu schreiben, die Schutzblocks und Semikolons einfügen / entfernen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top