Einführung in die Programmierung (Python) TA Tendenz für Anfänger

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.

Ursachen für häufige Fehler

  1. Eingabe im vollen Winkel
  2. Ich kann keine Einrückungsblöcke erkennen
  3. Ich kann den Typ nicht kennen
  4. Der Inhalt des Fehlers kann nicht gelesen werden

Ich werde anhand von Beispielen vorstellen, welche Fehler ich dabei gemacht habe und welche Maßnahmen ergriffen werden sollten.

Ich schreibe im vollen Winkel

Beispiel

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.

Lösung

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 kann keine Einrückungsblöcke erkennen

Beispiel

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.

Lösung

--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.

Ich kann den Typ nicht kennen

Beispiel

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).

Lösung

--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. ..

Ich kann die Details des Fehlers nicht lesen

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.

Lösung

――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.

Andere Ursachen für unlösbare Probleme

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.

  1. Wenn in der Jupyter-Zelle kein Fehler vorliegt, wird missverstanden, dass die Antwort korrekt ist.
  2. Das Problem ist in mehrere Zellen unterteilt und das Ergebnis ist nicht wie erwartet.

Wenn in der Jupyter-Zelle kein Fehler vorliegt, verstehe ich falsch, dass dies die richtige Antwort ist

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.

Das Problem ist in mehrere Zellen unterteilt und das Ergebnis ist nicht wie erwartet

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.

スクリーンショット 2019-12-08 4.53.51.png

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.

Zusammenfassung

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

Einführung in die Programmierung (Python) TA Tendenz für Anfänger
Eine Einführung in die objektorientierte Programmierung für Anfänger von Anfängern
Eine Einführung in die Python-Programmierung
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Einführung in Python For, While
Erste Schritte mit Python für Nicht-Ingenieure
[Python] Einführung in die Diagrammerstellung mit Corona-Virendaten [Für Anfänger]
Eine Einführung in Python für maschinelles Lernen
Eine Einführung in Python für C-Sprachprogrammierer
IPynb-Bewertungssystem mit TA von Introduction to Programming (Python)
Memo Nr. 4, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Python für Super-Anfänger Super-Anfänger Python # Einfach loszuwerden
Memo Nr. 3, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Einführung in die Python-Sprache
Memo Nr. 1, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Einführung in OpenCV (Python) - (2)
Python Lehrbuch für Anfänger
Versuchen Sie, RPN mit Python zu berechnen (für Anfänger)
[Einführung in die Udemy Python3 + -Anwendung] 43. for else-Anweisung
Memo Nr. 2, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Memo Nr. 7, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Python-Anfängerhandbuch (Einführung)
Memo Nr. 6 für Python-Anfänger zum Lesen von "Detaillierte Erklärung der Python-Grammatik"
Wie man Python für Anfänger schneller macht [numpy]
[Für Anfänger] Wie man Programmierung studiert Private Memo
OpenCV für Python-Anfänger
Memo Nr. 5, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
[Einführung für Anfänger] Umgang mit MySQL mit Python
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Einführung in die Graph Database Neo4j in Python für Anfänger (für Mac OS X)
Grundlegendes zur Python for Pepper-Entwicklung. -Einführung in Python Box-
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Python, das ich Anfängern in der Programmierung empfehlen möchte
[Für Anfänger] So studieren Sie den Python3-Datenanalysetest
[Einführung in Python] Hochgeschwindigkeits-Einführung in Python für vielbeschäftigte C ++ - Programmierer
Vorbereitung zum Starten von "Python Machine Learning Programming" (für macOS)
Python # So überprüfen Sie Typ und Typ für Super-Anfänger
[Einführung in Python] So schreiben Sie sich wiederholende Anweisungen mit for-Anweisungen
AOJ Einführung in die Programmierung Thema Nr. 1, Thema Nr. 2, Thema Nr. 3, Thema Nr. 4
Einführung in Python Django (2) Win
Lernablauf für Python-Anfänger
Python3-Umgebungskonstruktion (für Anfänger)
3 Gründe für die Programmierung Anfänger sollten mit Python beginnen
AOJ Einführung in die Programmierung Thema Nr. 5, Thema Nr. 6
Python #Funktion 2 für Super-Anfänger
Grundlegende Python-Grammatik für Anfänger
[Einführung in Python] <Liste> [Bearbeiten: 22.02.2020]
Einführung in Python (Python-Version APG4b)
100 Pandas klopfen für Python-Anfänger
Python #Funktion 1 für Super-Anfänger
Python #Liste für Super-Anfänger
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 4 Verwenden Sie die GUI
[Einführung in die Udemy Python3 + -Anwendung] 42. für Anweisung, break-Anweisung und continue-Anweisung
■ Kaggle-Übung für Anfänger - Einführung von Python - von Google Colaboratory
[Erklärung für Anfänger] Einführung in die Faltverarbeitung (erklärt in TensorFlow)
TensorFlow-Lernmethode für Profis der freien Künste und Python-Anfänger
So konvertieren Sie den Python # -Typ für Python-Superanfänger: int, float
[Für Anfänger] Skript innerhalb von 10 Zeilen (4. Verbindung von Python zu sqlite3)
Einführung in Python für VBA-Benutzer - Aufrufen von Python aus Excel mit xlwings-
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden