Dieser Artikel ist der 8. Tagesartikel von DSL Adventskalender 2019.
Dieser Artikel ist möglicherweise eher ein Bericht für Programmierpädagogen. Außerdem versuche ich nicht, eine bestimmte Person oder Gruppe zu kritisieren, daher wäre es hilfreich, wenn Sie das verstehen könnten.
Ab diesem Jahr hat eine Vorlesung mit dem Titel "Einführung in die Programmierung" für Studenten aller Abteilungen des Muroran Institute of Technology begonnen. In dieser Klasse lernen Sie systematisch die Programmierung und Datenverarbeitung mit der Programmiersprache "Python". Die Übung verwendet das Jupyter-Notizbuch des Nationalen Instituts für Informatik (NII). Darüber hinaus verteilen wir ein .ipynb für jede Übung und eine Aufgabe für jede Klasse und bitten sie, das Problem in einem Frage-Antwort-Format zu bearbeiten.
Ich nehme an der Vorlesung als TA (Teaching Assistant) teil. Ich möchte einige Punkte vorstellen, die Programmieranfänger, die in diesem Prozess bemerkt haben, besonders beim Erlernen von Python stolpern. Ich hoffe, dass die Leute und Lehrer in derselben Position, die diesen Artikel gesehen haben, nützlich sein werden.
Ich werde anhand von Beispielen vorstellen, welche Fehler ich dabei gemacht habe und welche Maßnahmen ergriffen werden sollten.
Die Eingabe in voller Breite ist auch für Anfänger in der Programmierung üblich. Wenn ein Leerzeichen in voller Breite vorhanden ist, tritt ein Fehler auf und das Programm funktioniert nicht. Beachten Sie außerdem, dass Python auch dann problemlos als str verwendet werden kann, wenn es sich um ein Zeichen voller Breite handelt. Diejenigen, die besonders vorsichtig sein sollten, sind diejenigen, die in voller Breite tippen. Besonders in der heutigen Zeit gibt es einige Leute, die nicht eher an Tastatureingaben als an Programmierungen gewöhnt sind, da es sich angeblich um die Smartphone-Generation handelt. In diesem Fall ist es nicht möglich, die Position des Symbols zu kennen.
Ich denke, die beste Lösung ist, sich an die Tastatur zu gewöhnen. Ansonsten ist es möglicherweise besser, das Problem selbst in ein Problem umzuwandeln, für das keine Eingabe in voller Breite erforderlich ist. (Zum Beispiel werden alle Teile, die japanische Sätze ausgeben, in Englisch geändert.)
Ich sehe diesen Fehler oft.
for i in range(10):
for j in range(10):
print(f'i + j = {i + j}') #Error:Einzug ist nicht ausgerichtet
Ursprünglich musste ich den Einzug mit "print ()" verringern, aber er wurde nicht richtig abgesenkt. Wenn es sich um eine doppelte for-Anweisung wie die oben genannte handelt, gibt es nicht so viele Fehler, aber es scheint, dass die Anzahl der Fehler mit zunehmender Anzahl verschachtelter Strukturen zunimmt, z. B. durch die Einbeziehung bedingter Zweige, z. B. wenn.
Dies wird durch das Kopieren / Einfügen des Programms und die Funktion zum automatischen Einrücken des Jupyter gefördert. Es scheint, dass viele Leute beim Kopieren und Einfügen eines Programms stolpern, anstatt das Programm einer anderen Person aufzurufen, wenn sie ein Problem entwerfen, indem sie einen Teil des vorherigen Problems verwenden und es in das nächste Problem integrieren. Wenn das Problem beispielsweise darin besteht, dass in der ersten Frage nur der bedingte Zweig erstellt und in der zweiten Frage in die for-Schleife aufgenommen wird, funktioniert die Neststruktur möglicherweise aufgrund eines Fehlers aufgrund der Funktion zum automatischen Einrücken nicht. Darüber hinaus gibt es einige Muster, bei denen die Struktur immer schwieriger zu verstehen ist, wenn der Einzug in mehreren Räumen aufgenommen wird.
--Verstehen der Verschachtelungsstruktur
Ich denke, dass diese drei Punkte normalerweise funktionieren werden. In Python werden Schleifen im Gegensatz zur C-Sprache durch Einrückungen anstelle von Klammern gesteuert. Daher sollte der Verschachtelungsstruktur besondere Aufmerksamkeit gewidmet werden. Es wird wichtig, dass die Reihenfolge uns zuerst die Wichtigkeit des Einrückens unabhängig vom Programm aufzeigt. Die Verwendung der Tabulatortaste erleichtert außerdem die Vervollständigungsfunktion und das Einrücken. Daher halte ich es für wichtig, frühzeitig zu lernen, wie man sie verwendet, um dieses Problem zu lösen. Das Lesen des Fehlers ist die beste Lösung, aber ich denke, es ist wichtig, die Struktur zu verstehen, da einige Codes nicht wissen, was falsch ist.
Das ist so ein Fehler.
#Muster 1
a = 1
b = "1"
print(a + b) #Error: int +str kann nicht
print(a + int(b)) # 2
#Muster 2
a = (1, 2, 3)
b = [1, 2, 3]
a.append(4) #Error:Taple kann nicht angehängt werden
b.append(4) # [1, 2, 3, 4]
Muster 1 ist ein häufiges Muster für Programmieranfänger. Da es jedoch Typen in anderen Sprachen als Python deklariert und dann Variablen deklariert, ist es meines Erachtens besonders wichtig, wenn Python eine Programmiersprache ist, die Sie zum ersten Mal lernen. .. Das Gleiche gilt für Muster 2, bei dem a ein Taple und b eine Liste ist. Wenn Sie diesen "Arrays" jedoch Elemente hinzufügen möchten, verwenden Sie "Anhängen". Wenn Sie jedoch Anfänger in der Programmierung sind, können Sie Tapples verwenden, auch wenn das Array eine Liste ist. Es scheint, dass es fast gleich aussieht (sogar in einem Wörterbuch).
--Typbestätigung mit type ()
Ich kenne die schwierige Geschichte des Typs nicht, es tut mir leid, aber es ist in Ordnung, weil es schnell ist, den Typ der Variablen usw. zu überprüfen, die ich in Python mit type () im Grunde nicht verstehe. Wenn Sie den Unterschied zwischen den Typen verstehen, sollte dies nicht der Fall sein. Daher ist es möglicherweise besser, mehr Zeit mit dem Unterrichten zu verbringen. Und da dies auch durch Lesen des Fehlers behoben werden kann, ist die Fehleranzeige immer noch großartig. Der Rest handelt vom Schreibmodul. Dies hängt von der Python-Umgebung ab, aber diese Verwendung allein wird wahrscheinlich einen Artikel in Anspruch nehmen. Daher werde ich eine ausführliche Erklärung weglassen, aber die Verwendung des Tippmoduls kann den Typ bewusster machen. ..
Es ist besonders schwierig, hier ein Beispiel zu nennen, deshalb möchte ich eine kleine Lösung vorschlagen. Dies kann auch das wichtigste sein, da die meisten der oben aufgeführten Probleme nur durch Lesen des Fehlers gelöst werden sollten.
――Zusammenfassung der Sätze der erwarteten Fehler und ihrer Lösungen
Ich denke, diese beiden Punkte können leicht gemacht werden. Solange der Inhalt des Fehlers das gleiche Problem löst, wird angenommen, dass die meisten Menschen häufig am gleichen Ort stolpern. Daher halte ich es für gut, die erwarteten Fehlerinhalte und ihre Gegenmaßnahmen im Voraus zusammenzufassen. In Bezug auf die Websuche haben Programmieranfänger nicht die Angewohnheit, Fehler zu googeln. Mit Python können die meisten Fehler einfach durch Kopieren der Fehleranweisung und der Suchergebnisse behoben werden, sodass es möglicherweise einfacher ist, sich eine solche Gewohnheit anzueignen.
Von hier aus möchte ich kurz auflisten, was ein Fehler zu sein scheint, der durch die Verwendung von Unterrichtsmaterialien und Jupiter verursacht wird, anstatt die Ursache des Fehlers. Ich denke, dies ist ein Problem, das sowohl von der Lehrseite als auch von der Lehrseite leicht gelöst werden kann, indem die Spezifikationen von jupyter verstanden werden.
In der derzeit bereitgestellten Jupyter Notebook-Umgebung wird bei Ausführung der Zelle Grün angezeigt, wenn kein Fehler vorliegt, und Rot, wenn ein Fehler vorliegt. Grundsätzlich gibt es kein Problem, wenn alles Grün angezeigt wird, im Gegenteil, es kann den Fortschritt behindern. In einer Zelle, die nur eine Funktion definiert, wird beispielsweise kein Fehler angezeigt, auch wenn das Verhalten des Inhalts etwas seltsam ist, sodass die Zelle problemlos ausgeführt werden kann. Daher gibt es ein Problem, bei dem Sie nicht wissen, wo Sie suchen müssen, wenn ein Fehler auftritt, nachdem Sie eine Verarbeitung mit dieser Funktion in der unteren Zelle ausgeführt haben.
Dieses Problem hängt mit ipynb zusammen, das von meiner Universität in der Vorlesung verteilt wurde, und es hängt eng mit dem obigen Problem zusammen, aber das Problem ist in mehrere Zellen unterteilt und das Verhalten bei der Ausführung ist seltsam. .. Ein Beispiel finden Sie in der Abbildung unten.
Wenn jedes Problem wie oben vom Ausführungsergebnis der obigen Zelle abhängt, kann das Verhalten verdächtig sein. Im obigen Beispiel wird q3 anhand der von q1 und q2 erstellten Liste und Funktion abgefragt. In Wirklichkeit kann dies jedoch ein komplizierterer Prozess oder ein komplizierteres Problem sein. Was daran falsch ist, ist, dass die Zellenausführungsreihenfolge nur von oben nach unten angenommen wird. Wenn Sie es erneut ausführen, kann sich das Ergebnis daher von der vorhandenen Ausgabe unterscheiden. Wenn das Notebook aufgrund eines Serverfehlers usw. nicht mehr reagiert, muss der Kernel möglicherweise neu gestartet werden, aber viele Benutzer führen ihn nur in der Mitte der Zelle aus. (Dies liegt daran, dass ich nicht verstehe, dass alle Variablen usw. durch einen Neustart zurückgesetzt werden.)
Da die Spezifikationen dieses Jupyter umständlich sind, halte ich es für sicher, ein Problem in einer Zelle zu kombinieren, um dies zu lösen.
Ich erwähnte kurz, was ich dachte, als ich TA für die Einführung in die Python-Programmierung machte, aber ich hatte den Eindruck, dass ich oft gestolpert bin, weil die Lehrer nicht genug Rücksicht genommen haben. Ich habe es satt, zu lange zu schreiben, also werde ich hier einen Pinsel setzen, aber in Wirklichkeit stolpere ich über einen trivialeren Punkt, so dass es immer noch schwierig ist, Programmieren zu unterrichten. fühlte. Ich hoffe dieser Artikel hilft jemandem.
Recommended Posts