
Paroxython ist eine Reihe von Befehlszeilen -Tools, die nach algorithmischen Funktionen Ihre Sammlung von Python -Programmierübungen markieren und filtern .
Sie sind Lehrer, der für einen einleitenden Programmierkurs in einer Bildungseinrichtung verantwortlich ist. Im Laufe der Jahre haben Sie viele - zu viele - in den Bereichen Snippets und Code -Snippets angesammelt, die für Ihre Schüler von Interesse sind.
Oder als erfahrener Entwickler möchten Sie Ihr Wissen teilen, indem Sie einem geliebten Menschen helfen, zu lernen, wie man codiert. Eine flüchtige Suche nach pädagogischem Material ergibt eine überwältigende Anzahl von Websites und Repositorys, die mit Python -Programmen verschiedener Ebenen gefüllt sind (z. B. 1, 2, 3, 4, 5, 6 und vieles mehr von Awesome Python in der Bildung).
In jedem Fall sind die von Ihnen gesammelten Python -Quellcodes in der Regel zahlreich (Hunderte oder sogar Tausende), vernünftige Größe (alles unter 100 Codezeilen) und pädagogischer Natur (z. B. Snippets, Beispiele, Testlösungen, Übungslösungen, klassische Algorithmen). Die Programmierkonzepte, die Sie unterrichten möchten, bleiben relativ niedrig (z. B. Aufgaben, verschachtelte Schleifen, Akkumulationsmuster, rekursive Schwanzfunktionen usw.).
Wenn all das bekannt klingt, lesen Sie mich weiter.
Paroxython soll Ihnen helfen, Ihnen das einzige Programm auszuwählen, das Ihren Anforderungen am besten entspricht. Zum Beispiel werden die folgenden Fragen gerne beantwortet:
- Wie kann dieses Konzept illustriert werden?
- Welche Probleme verwenden dieselben Algorithmic- und Datenstrukturen wie diese?
- Welche Hausaufgaben sollte ich meinen Schülern geben, damit sie den Inhalt der letzten Lektion üben können?
Da Paroxython weiß, was Ihre Klasse weiß, kann es das richtige Programm zur richtigen Zeit empfehlen:
- Was würde eine gute Bewertungsübung machen?
- Welche Übungen kann ich zu dieser Prüfung geben?
- Was sind die aktuellen Lernkosten für dieses Beispiel?
Auf lange Sicht kann Paroxython Sie führen und Sie Ihren Kursüberblick überdenken:
- Was sind die Voraussetzungen für das Konzept der Aufgabe?
- Habe ich genug Material, um Subroutinen einzuführen, bevor ich überhaupt über Bedingungen und Schleifen spreche?
- Unter den Schleifen muss an erster Stelle stehen: die mächtigsten (
while) oder die nützlichste (for)?- Wie kann man diese Gruppe üblicher iterativer Muster logisch strukturieren?
- Was sind die Grundlagen genau?
Alle Themen, in denen der Autor seine Meinung seit er an diesem Projekt gearbeitet hat, haben seine Meinung geändert!
In einer idealen Welt könnte Paroxython sogar den tödlichsten religiösen Kriegen mit rationalen, datengetriebenen Argumenten ein Ende setzen:
- Vater, ist es eine Sünde, früh zu verlassen?
- Sollte ein echtes Byte eine Maske verwenden?

Paroxython startet aus einem bestimmten Programmordner . Der Inhalt ist analysiert, und alle Funktionen, die den angegebenen Spezifikationen erfüllen "assignment_lhs_identifier:a": 4, 6, 18 werden mit ihren Spannweiten gekennzeichnet "loop_with_late_exit:while": 3-7, 20-29 z.
Diese Etiketten bilden nur verstreutes Wissen. Der nächste Schritt besteht darin, sie auf eine Taxonomie zuzuordnen, die mit berücksichtigten grundlegenden hierarchischen Einschränkungen entworfen wurde (z. B. die Tatsache, dass die Einführung des Konzepts des frühen Ausstiegs nach dem der Schleife, der selbst den des Kontrollflusss erfordert, durch das Taxon "flow/loop/exit/early" ausdrückt.

Auszug der aus den Algorithmen erzeugten Taxonomie - Python.
Klicken Sie hier, um zu seiner vollständigen dynamischen Version im Benutzerhandbuch zu springen.
Alles wird dann in einer Tag -Datenbank bestehen, die später durch eine Pipeline von Befehlen filtriert werden kann, zum Beispiel:
Das Ergebnis ist eine Liste der Programmempfehlungen, die durch Erhöhung der Lernkosten bestellt wurden.
Angenommen, das programs enthält diese einfachen Programme.
Erstellen Sie zuerst diese Tag -Datenbank:
> paroxython collect programs
Labelling 21 programs.
Mapping taxonomy on 21 programs.
Writing programs_db.json.Dann filtern Sie es durch diese Pipeline:
> paroxython recommend programs
Processing 5 commands on 21 programs.
19 programs remaining after operation 1 (impart).
18 programs remaining after operation 2 (exclude).
12 programs remaining after operation 3 (exclude).
10 programs remaining after operation 4 (include).
10 programs remaining after operation 5 (hide).
Dumped: programs_recommendations.md.Et voilà, Ihr Empfehlungsbericht!
Sehr zu niemandem Überraschung:
python -m pip install paroxython
Der folgende Befehl sollte eine Hilfebotschaft drucken und beenden:
paroxython --help
Wenn Sie Jupyter Notebook/Labor verwenden, haben Sie auch einen sogenannten Magic-Befehl installiert. Laden Sie es so:
% load_ext paroxython Dies sollte "paroxython 0.7.0 loaded." . Führen Sie es in einer Zelle Python -Code aus:
% % paroxython # Lines
def fibonacci ( n ): # 2
result = [] # 3
( a , b ) = ( 0 , 1 ) # 4
while a < n : # 5
result . append ( a ) # 6
( a , b ) = ( b , a + b ) # 7
return result # 8| Taxon | Linien |
|---|---|
call/subroutine/method/sequence/list/append | 6 |
condition/inequality | 5 |
def/subroutine/function/impure | 2-8 |
def/subroutine/parameter/arg | 2 |
flow/loop/exit/late | 5-7 |
flow/loop/while | 5-7 |
meta/count/program/sloc/8 | 2-8 |
meta/count/subroutine/sloc/7 | 2-8 |
meta/count/variety/3 | 2-8 |
meta/program | 2-8 |
operator/arithmetic/addition | 7 |
style/procedural | 2-8 |
type/number/integer/literal | 4 |
type/number/integer/literal/zero | 4 |
type/sequence/list | 6 |
type/sequence/list/literal/empty | 3 |
type/sequence/tuple/literal | 4, 4, 7, 7 |
var/assignment/explicit/parallel | 4 |
var/assignment/explicit/parallel/slide | 7 |
var/assignment/explicit/single | 3 |
var/assignment/implicit/parameter | 2 |
var/scope/local | 2-8, 2-8, 2-8, 2-8 |
Wie Sie sehen können, identifiziert sich Paroxython in diesem Programm unter anderem:
style/procedural );def/subroutine/function/impure );while Schleife ( flow/loop/while ) mit einem späten Ausgang ( flow/loop/exit/late );type/sequence/list/literal/empty und call/subroutine/method/sequence/list/append );var/assignment/explicit/parallel ). Beachten Sie, dass wir zwischen expliziten (mit = ) und impliziten (Parametern- und Iterationsvariablen) Zuweisungen unterscheiden;var/assignment/explicit/parallel/slide ). Wenn die Konfession für uns einzigartig ist, tritt das Muster selbst in einer Reihe von Programmen auf: Implementierungen von C-Finite-Sequenzen mit C größer als 1, größter gemeinsamer Divisor, Quicksort usw.var/scope/local );meta/count/variety/3 ), abhängig von der Anzahl der Linien, Merkmale und unterschiedlichen Merkmale. Der Magic Command %%paroxython (entsprechend dem Subcommand tag ) kratzt nur die Oberfläche des Systems. Um die Lernkosten der Funktionen zu schätzen und umsetzbare Empfehlungen zu erhalten, müssen Sie zunächst die Tag -Datenbank mit collect erstellen und dann recommend auf eine Pipeline aufrufen.
Obwohl dies immer noch in der Arbeit ist, sollte Paroxython bereits ziemlich gut dokumentiert sein:
Schließlich sollte eine Reihe von Beispielen und eine umfassende Testabdeckung dazu beitragen, verbleibende Frage zu beantworten.