Beste Möglichkeiten, einem Anfänger das Programmieren beizubringen? [geschlossen]

324

Ursprüngliche Frage

Ich bin gerade damit beschäftigt, meinem Bruder das Programmieren beizubringen. Er ist ein absoluter Anfänger, aber sehr klug. (Und er will eigentlich lernen). Ich habe festgestellt, dass einige unserer Sitzungen in kleinen Details festgefahren sind, und ich fühle mich nicht sehr gut organisiert. ( Aber die Antworten auf diesen Beitrag haben sehr geholfen. )

Was kann ich besser tun, um ihn effektiv zu unterrichten? Gibt es eine logische Reihenfolge, in der ich Konzept für Konzept durchlaufen kann? Gibt es Komplexitäten, die ich bis später vermeiden sollte?

Die Sprache, mit der wir arbeiten, ist Python , aber Ratschläge in jeder Sprache sind willkommen.


Wie man hilft

Wenn Sie gute haben, fügen Sie bitte Folgendes in Ihre Antwort ein:

  • Anfängerübungen und Projektideen
  • Ressourcen für den Unterricht von Anfängern
  • Screencasts / Blogposts / kostenlose E-Books
  • Drucken Sie Bücher, die gut für Anfänger sind

Bitte beschreiben Sie die Ressource mit einem Link dazu, damit ich einen Blick darauf werfen kann. Ich möchte, dass jeder weiß, dass ich definitiv einige dieser Ideen verwendet habe. Ihre Beiträge werden in diesem Beitrag zusammengefasst.


Online-Ressourcen für Anfänger:


Empfohlene Druckbücher für Anfänger

Justin Standard
quelle
Ich verstehe nicht, warum dies geschlossen werden sollte. Mindestens 295 Benutzer haben festgestellt, dass diese Frage (und die 92 Antworten) hilfreich genug sind, um sie zu verbessern. 290 haben sie sogar als einen ihrer Favoriten angesehen. Die Frage führte zu einer sehr nützlichen Zusammenfassung der Lehrmittel. Es hat nicht wirklich zu "Argumenten" oder "Debatten" geführt, aber wirklich viele gute Ratschläge, wie man einen der schwierigen "menschlichen Faktoren" bei der Programmierung angeht. Ich denke, das Schließen einer solchen Frage ist drakonisch und schädlich für die StackOverflow-Community.
Justin Standard
@JustinStandard Haben Sie darüber nachgedacht, Ihre Änderungen in einige der Antworten auf Kommentare umzuwandeln? ZB hier , hier und hier
Jason Plank

Antworten:

118

Ich musste mit mehreren Programmierern für Anfänger zusammenarbeiten (ich habe nie eine Codezeile geschrieben), und ich werde diesen Herbst einen Workshop nach der Schule mit Schülern machen. Dies ist das, was ich der Dokumentation am nächsten komme. Es ist noch in Arbeit, aber ich hoffe, es hilft.

1) FizzBuzz. Beginnen Sie mit Befehlszeilenprogrammen. Sie können sehr schnell einige lustige Spiele oder Tools schreiben und alle Sprachfunktionen sehr schnell erlernen, ohne zuerst die GUI-Tools erlernen zu müssen. Diese frühen Apps sollten so einfach sein, dass Sie keine echten Debugging-Tools verwenden müssen, damit sie funktionieren.

Wenn nichts anderes Dinge wie FizzBuzz sind gute Projekte. Ihre ersten Apps sollten sich nicht mit DBs, Dateisystemen, Konfigurationen usw. befassen müssen. Dies sind Konzepte, die die meisten Menschen nur verwirren, und wenn Sie nur die Syntax und die grundlegenden Framework-Funktionen lernen, brauchen Sie wirklich keine größere Komplexität.

Einige Projekte:

  • Hallo Welt!
  • Nehmen Sie das Jahr meiner Geburt und berechnen Sie mein Alter (nur (jetzt - damals) keine Monatskorrekturen). (einfache Mathematik, Eingabe, Ausgabe)
  • Fragen Sie nach einer Richtung (oben, unten, links, rechts) und teilen Sie dem Benutzer dann sein Schicksal mit (fallen Sie in ein Loch, finden Sie einen Kuchen usw.). (Boolesche Logik)
  • FizzBuzz, aber einmal pro Sekunde zählen. (Schleifen, Timer und mehr Logik)
  • Je nach Alter mögen manche eine App, die die Benutzer in bestimmten Abständen als zufällige Beleidigung bezeichnet. (Loops, Arrays, Timer und Random, wenn Sie das Intervall zufällig machen)

2) Einfaches Projekt Sobald sie die Sprachfunktionen gut verstanden haben, können Sie ein Projekt starten (einfache, unterhaltsame Spiele funktionieren gut.). Sie sollten versuchen, dass das erste Projekt innerhalb von 6-12 Stunden abgeschlossen werden kann. Nehmen Sie sich keine Zeit, um es früh zu entwerfen. Lassen Sie sie es entwerfen, auch wenn es scheiße ist. Wenn es auseinander fällt, sprechen Sie darüber, was passiert ist und warum es fehlgeschlagen ist, wählen Sie ein anderes Thema aus und beginnen Sie erneut.

Hier beginnen Sie mit der Einführung der Debugging-Funktionen Ihrer Tools. Selbst wenn Sie das Problem durch Lesen des Codes erkennen können, sollten Sie ihnen den Umgang mit den Tools beibringen und ihnen dann zeigen, wie Sie es sehen können. Dies dient dem doppelten Zweck, die Debugging-Tools zu lehren und Fehler ohne Tools zu identifizieren.

Sobald oder wenn das Projekt funktionsfähig ist, können Sie damit Refactoring-Tools einführen. Es ist gut, wenn Sie das Projekt dann mit einigen einfachen Funktionen erweitern können, die Sie nie geplant haben. Dies bedeutet normalerweise Refactoring und erhebliches Debugging, da nur sehr wenige Leute beim ersten Mal auch nur halbwegs anständigen Code schreiben.

Einige Projekte:

  • Henker-Spiel
  • Experimentieren mit Robotik ( Vex und Mindstorms sind Optionen)

3) Reales Projekt Starten Sie ein reales Projekt, das einige Zeit dauern kann. Verwenden Sie die richtige Quellcodeverwaltung und legen Sie Wert darauf, einen Zeitplan zu erstellen. Führen Sie dieses Projekt wie ein echtes Projekt aus, wenn nichts anderes die gute Erfahrung ist, mit den Tools umzugehen.

Natürlich müssen Sie dies für jede Person anpassen. Das Wichtigste, was ich gefunden habe, ist, dass selbst die ersten einfachen Apps auf das angewendet werden, woran die Person interessiert ist.

Einige Projekte:

  • Tetris
  • Textdatei-basierte Blog-Engine
  • Fortgeschrittenere Robotikarbeit
Eric Haskins
quelle
Dies ist eine großartige Anleitung. Persönlich kann ich mich nicht aus einer Papiertüte heraus codieren (ich würde gerne sehen, dass jemand das im wirklichen Leben tut), daher scheint dies ein guter Leitfaden zu sein, um mich selbst zu unterrichten.
Keyofnight
Dies ist eine sehr gute Antwort. Mein einziger Einwand ist, dass Tetris keine gute Wahl für ein erstes oder zweites Spiel ist. Auf dieser Ebene kann die Kollisionserkennung ein schwieriges Problem sein - es ist großartig, wenn sie es lösen können.
Phkahler
@phkahler Ich verstehe Ihren Standpunkt, aber ich glaube, Tetris ist interessant, weil es so viele OSS / Demo-Implementierungen gibt, die Sie vor und nach dem Schreiben Ihres Codes analysieren können.
Eric Haskins
30

Sie könnten versuchen, Alice zu verwenden . Es ist ein 3D-Programm, das für die Verwendung in einführenden Programmierklassen entwickelt wurde.

Die zwei größten Hindernisse für neue Programmierer sind oft:

  • Syntaxfehler
  • Motivation (etwas Sinnvolles und Lustiges schreiben anstatt erfunden)

Alice verwendet eine Drag & Drop-Oberfläche zum Erstellen von Programmen, um die Möglichkeit von Syntaxfehlern zu vermeiden. Mit Alice können Sie 3D-Welten erstellen und (einfache) 3D-Zeichen und -Animationen mit Code steuern. Dies ist normalerweise viel interessanter als das Implementieren verknüpfter Listen.

Erfahrene Programmierer mögen Alice als Spielzeug betrachten und sich über das Ziehen und Ablegen von Codezeilen lustig machen, aber Untersuchungen zeigen, dass dieser Ansatz funktioniert.

Haftungsausschluss: Ich habe an Alice gearbeitet.

Jason Pratt
quelle
Ich habe es durch Randy Pauschs letzten Vortrag erfahren. Die Gründe für dieses Projekt haben mich umgehauen.
Jesvin Jose
28

Ich empfehle Logo (auch bekannt als die Schildkröte), um die Grundkonzepte zu verstehen. Es bietet eine gute Sandbox mit sofortiger grafischer Rückmeldung, und Sie können Schleifen, Variablen, Funktionen, Bedingungen usw. demostrieren. Diese Seite bietet ein hervorragendes Tutorial.

Wechseln Sie nach dem Logo zu Python oder Ruby. Ich empfehle Python, da es auf ABC basiert, das zum Unterrichten des Programmierens erfunden wurde.

Wenn ich Programmieren unterrichte, muss ich EHaskins Vorschlag von einfachen Projekten und dann komplexen Projekten folgen. Der beste Weg zu lernen ist, mit einem bestimmten Ergebnis und einem messbaren Meilenstein zu beginnen. Es hält den Unterricht fokussiert, ermöglicht es dem Schüler, Fähigkeiten aufzubauen und dann auf diesen Fähigkeiten aufzubauen, und gibt dem Schüler etwas, das er Freunden zeigen kann. Unterschätzen Sie nicht die Macht, etwas für die eigene Arbeit zu zeigen.

Theoretisch können Sie bei Python bleiben, da Python fast alles kann. Es ist ein gutes Mittel, um objektorientierte Programmierung und (die meisten) Algorithmen zu lehren. Sie können Python im interaktiven Modus wie eine Befehlszeile ausführen, um ein Gefühl dafür zu bekommen, wie es funktioniert, oder ganze Skripte gleichzeitig ausführen. Sie können Ihre Skripte im laufenden Betrieb interpretieren oder in Binärdateien kompilieren. Es gibt Tausende von Modulen, um die Funktionalität zu erweitern. Sie können einen grafischen Taschenrechner wie den im Lieferumfang von Windows enthaltenen erstellen oder einen IRC-Client oder etwas anderes erstellen.

XKCD beschreibt Pythons Leistung etwas besser: "Du fliegst! Wie?"  "Python!"

Sie können danach zu C # oder Java wechseln, obwohl sie nicht viel bieten, was Python noch nicht hat. Der Vorteil davon ist, dass sie eine C-Syntax verwenden, die viele (wage ich am meisten zu sagen?) Sprachen verwenden. Sie müssen sich noch nicht um die Speicherverwaltung kümmern, aber Sie können sich daran gewöhnen, dass der Sprachinterpreter ein bisschen mehr Freiheit und weniger Handgriff hat. Python erzwingt Leerzeichen und Einrückungen, was die meiste Zeit nett ist, aber nicht immer. Mit C # und Java können Sie Ihr eigenes Leerzeichen verwalten und dabei stark typisiert bleiben.

Von dort ist der Standard C oder C ++. Die Freiheit in diesen Sprachen ist fast existenziell. Sie sind jetzt für Ihre eigene Speicherverwaltung verantwortlich. Es gibt keine Speicherbereinigung, die Ihnen helfen könnte. Hier lernen Sie die wirklich fortgeschrittenen Algorithmen (wie Mergesort und Quicksort). Hier erfahren Sie, warum "Segmentierungsfehler" ein Schimpfwort ist. Hier laden Sie den Quellcode des Linux-Kernels herunter und blicken in den Abyss. Schreiben Sie zunächst einen Ringpuffer und einen Stapel für die Zeichenfolgenmanipulation. Dann arbeite dich hoch.

Magus
quelle
Tatsächlich verwalten Sie den Speicher in C nicht vollständig. Sie haben Malloc usw. und können ihn kostenlos für Sie verwalten. Sie müssen dem System nur mitteilen, wann Sie mehr Speicher benötigen und wann Sie mit dem von Ihnen verwendeten Speicher fertig sind.
compman
12

Python-Paket VPython - 3D-Programmierung für gewöhnliche Sterbliche ( Video-Tutorial ).

Codebeispiel:

from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.velocity = vector(0,-1,0)
dt = 0.01

while 1:
    rate (100)
    ball.pos = ball.pos + ball.velocity*dt
    if ball.y < ball.radius:
        ball.velocity.y = -ball.velocity.y
    else:
        ball.velocity.y = ball.velocity.y - 9.8*dt

VPython Bouncing Ball http://vpython.org/bounce.gif

jfs
quelle
Gut, kurz nachdem sie die Grundkonzepte gelernt haben. Das Erstellen von Grafiken ist eine großartige Möglichkeit, um Menschen zum Erlernen des Programmierens zu motivieren.
Phkahler
12

Beginnen Sie mit Turtle-Grafiken in Python.

Ich würde die Turtle-Grafik verwenden, die standardmäßig mit Python geliefert wird. Es ist visuell, einfach und Sie können diese Umgebung verwenden, um viele Programmierkonzepte wie Iterations- und Prozeduraufrufe einzuführen, bevor Sie zu weit in die Syntax einsteigen. Betrachten Sie die folgende interaktive Sitzung in Python:

>>> from turtle import *
>>> setup()
>>> title("turtle test")
>>> clear()
>>>
>>> #DRAW A SQUARE
>>> down()        #pen down
>>> forward(50)   #move forward 50 units
>>> right(90)     #turn right 90 degrees
>>> forward(50)
>>> right(90)
>>> forward(50)
>>> right(90)
>>> forward(50)
>>>
>>> #INTRODUCE ITERATION TO SIMPLIFY SQUARE CODE
>>> clear()
>>> for i in range(4):
        forward(50)
        right(90)
>>>
>>> #INTRODUCE PROCEDURES   
>>> def square(length):
        down()
        for i in range(4):
            forward(length)
            right(90)
>>>
>>> #HAVE STUDENTS PREDICT WHAT THIS WILL DRAW
>>> for i in range(50):
        up()
        left(90)
        forward(25)
        square(i)
>>>
>>> #NOW HAVE THE STUDENTS WRITE CODE TO DRAW
>>> #A SQUARE 'TUNNEL' (I.E. CONCENTRIC SQUARES
>>> #GETTING SMALLER AND SMALLER).
>>>
>>> #AFTER THAT, MAKE THE TUNNEL ROTATE BY HAVING
>>> #EACH SUCCESSIVE SQUARE TILTED

Beim Versuch, die letzten beiden Aufgaben zu erfüllen, werden sie viele fehlgeschlagene Versuche haben, aber die Fehler werden visuell interessant sein und sie werden schnell lernen, wenn sie versuchen herauszufinden, warum sie nicht das gezeichnet haben, was sie erwartet hatten.

dyoung
quelle
11

Der Schlüssel ist, dass die betreffende Person ein Problem haben muss, das sie lösen möchte. Wenn Sie kein Programm haben, das Sie schreiben möchten (und etwas Vernünftiges und Definiertes, nicht "Ich möchte das nächste Beben schreiben!"), Können Sie das Programmieren nicht lernen, weil Sie nichts haben, was Sie motivieren könnte . Ich meine, Sie könnten ein Buch lesen und die Syntax und Semantik einer Sprache grob verstehen, aber bis Sie ein Programm haben, das Sie schreiben möchten, werden Sie nie die Brennnessel verstehen .

Wenn dieser Anstoß existiert, sind alles andere nur kleine Details.

DrPizza
quelle
Ich denke, der beste Weg, ein technisches Fach zu lernen, besteht darin, zu lernen, kleine, inkrementelle Probleme zu lösen.
Cbednarski
8

Ich weiß nicht , ob jemand diese hier erwähnt hat, noch nicht, aber Sie können prüfen wollen , Zed Shaw ‚s Lernen Python the Hard Way

Hoffe das hilft

inspectorG4dget
quelle
7

http://tryruby.hobix.com/"> Versuchen Sie Ruby (in Ihrem Browser)

CodingWithoutComments
quelle
Nett! Es scheint einfach und mächtig zu sein, Ruby
Luc M
5

Dies ist ein fantastisches Buch, das meine kleinen Brüder gelernt haben:

http://pine.fm/LearnToProgram/

Das Wichtigste ist natürlich, SOFORT nach Abschluss des Buches mit einem echten, nützlichen Programm zu beginnen.

Jarin Udom
quelle
4

Wenn er interessiert ist, sind die kleinen Details nicht die guten Teile? Mit Python haben Sie die Benutzeroberfläche bereits abgeschnitten, sodass die Verwirrung beseitigt ist. Warum nicht ein Projekt, ein Spiel oder etwas auswählen und umsetzen? Das klassische Hi-Lo-Zahlen-Ratespiel kann einfach über die Befehlszeile in 20 bis 30 Codezeilen (je nach Sprache natürlich) implementiert werden und bietet Ihnen Variablen, Bedingungen, Schleifen und Benutzereingaben.

jj33
quelle
4

Ich würde ihn einfach Tonnen von Code schreiben lassen. Lassen Sie ihn alles einfahren, was Sie tun, und stehen Sie einfach zur Verfügung, um Fragen zu beantworten.

Ob Sie es glauben oder nicht, nach ein paar Monaten, in denen er tonnenweise beschissenen Code geschrieben hat, wird er auf die Idee kommen und bessere Programme schreiben. An diesem Punkt können Sie sich in Details (Speicher usw.) festsetzen und auch über allgemeine Entwurfsprinzipien sprechen.

Ich habe gehört, dass das, was die großen Künstler von den mittelmäßigen unterscheidet, ist, dass sie jedes Mal, wenn sie üben, etwas verbessern, egal wie klein es ist. Lassen Sie Ihren Bruder üben, und er wird sich jedes Mal verbessern, wenn er sich an die Tastatur setzt.

Bearbeiten: [Justin Standard]

Esteban, das erinnert mich an einer aktuellen Codierung Horror Post , und ich Sie denken , Sie haben Recht. Aber ich denke, es lohnt sich immer noch, Methoden zu finden, die seine Praxis leiten . Keine Frage, ich möchte, dass er so viel Code schreibt, wie er kann. Das ist ein Grund, warum ich nach Beispielprojekten frage.

Esteban Araya
quelle
Ja, ich weiß, über welchen Beitrag Sie sprechen, Justin. Das Lesen erinnerte mich daran, wie die meisten Dinge, die ich gelernt habe, aus dem Versuch und Lernen aus meinen eigenen Fehlern entstanden sind. Ich kann wirklich nicht genug betonen, wie wichtig es ist, durch Lernen zu lernen!
Esteban Araya
2

Beginnen Sie zunächst wie alle anderen: mit einem Hello World- Programm. Es ist einfach und vermittelt ihnen ein grundlegendes Gefühl für das Layout eines Programms. Denken Sie daran, wann Sie das erste Mal programmiert haben und wie schwierig einige der Konzepte waren - fangen Sie einfach an.

Fahren Sie nach Hello World mit dem Erstellen einiger grundlegender Variablen, der Arithmetik, und dann mit der booleschen Logik und den if / else-Anweisungen fort. Wenn Sie eines Ihrer alten Programmierlehrbücher haben, schauen Sie sich einige der frühen Beispiele an und lassen Sie ihn diese durchgehen. Versuchen Sie einfach nicht, zu viel auf einmal einzuführen, sonst wird es überwältigend und verwirrend.

Brandon Wood
quelle
2

Etwas, worauf Sie achten sollten, wenn Sie Ihrem Bruder das Programmieren beibringen, ist, dass er sich nicht zu stark auf Sie verlässt. Wenn ich anderen helfe, werden sie mich oft als Antwortbuch für all ihre Fragen betrachten und anstatt zu experimentieren, um eine Antwort zu finden, fragen sie mich einfach. Oft ist das Experimentieren der beste Lehrer, und jedes Mal, wenn Ihr Bruder eine Frage wie "Was passiert, wenn ich einer Zeichenfolge 2 hinzufüge?" Sie sollten ihm sagen, er soll es ausprobieren und selbst sehen. Ich habe auch festgestellt, dass es hilfreich ist, einen Beispielcode zu sehen, in dem wir jedes Segment einzeln betrachten und es Stück für Stück erklären können, wenn ich ein Konzept nicht an jemanden weitergeben kann. Nebenbei bemerkt, Programmierneulinge haben oft Probleme mit der Idee der objektorientierten Programmierung.

Anton
quelle
2

Ich habe früher Programmieren unterrichtet und dein Bruder hat einen Hauptvorteil gegenüber den meisten meiner Schüler, die er lernen möchte :)

Wenn Sie sich für C entscheiden, hat ein Freund eine Website mit Programmen, an die sich ältere Generationen als grundlegende Typ-Ins erinnern. Die komplexeren von ihnen verwenden Flüche, die ihre Verwendung als Lehrmittel etwas negieren, aber einige von ihnen sind winzige Kleinigkeiten, und Sie können viel lernen, ohne es zu lernen.

Persönlich denke ich, dass Python und Ruby großartige Muttersprachen wären.

BEARBEITEN: Die Liste der Programmieraufgaben für Anfänger, die über Nacht angezeigt wurden, ist möglicherweise genau das, wonach Sie suchen.

funken
quelle
2

Es hängt wirklich vom Lernstil Ihres Bruders ab. Viele Menschen lernen schneller, indem sie sich die Hände schmutzig machen und sich darauf einlassen, die Konzepte und das Gesamtbild kristallisieren, während sie Fortschritte machen und ihr Wissen aufbauen.

Ich ziehe es vor, mit dem Gesamtbild zu beginnen und einen Drilldown in das Wesentliche durchzuführen. Das erste, was ich wissen wollte, war, wie alles zusammenpasst, dann all das objektorientierte Gobbledy-Buch, dann über Klassen und Instanzen und so weiter. Ich mag es, die zugrunde liegenden Konzepte und ein bisschen Theorie zu kennen, bevor ich die Syntax lerne. Ich hatte einen kleinen Vorteil, weil ich vor 20 Jahren einige Spiele in BASIC geschrieben habe, aber seitdem nicht mehr viel.

Vielleicht ist es nützlich, einen Produktionsprozess zu beschatten, indem Sie mit einem allgemeinen Leitbild, einem Plan und / oder einem Flussdiagramm beginnen und dann einen Pseudocode (der sich an die Syntax anlehnt, die Sie letztendlich verwenden werden) ausarbeiten, bevor Sie den Code tatsächlich schreiben.

Die goldene Regel hier ist, den Neigungsstil Ihres Schülers herauszufinden.

CAD-Typ
quelle
2

Wenn Ihr Bruder Zugang zu iTunes hat, kann er Videovorträge eines Einführungskurses in die Informatik herunterladen, den Richard Buckland an der Universität von New South Wales gehalten hat. Er ist ein engagierter Ausbilder und behandelt die Grundlagen des Rechnens und der C-Sprache. Wenn nichts anderes, sagen Sie Ihrem Bruder, er soll die Videos im Hintergrund spielen, und einige Konzepte könnten durch Osmose entstehen. :) :)

COMP1917 Higher Computing - 2008 Sitzung 1 http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444

Wenn der Link nicht funktioniert, ist hier ein Pfad:

Startseite -> iTunes U -> Engineering -> COMP1917 Higher Computing - 2008 Sitzung 1

CodeCurious
quelle
2

Es gibt ein Wikibook, das ziemlich gut zum Erlernen von Python geeignet ist .

Ich weiß nicht, wie die Wikibooks für andere Sprachen sind, aber ich persönlich habe Python aus dem Wikibook gelernt, wie es im Februar 2007 war

ps - Wenn Sie mit Wikibooks nicht vertraut sind , handelt es sich im Grunde genommen um die Wikipedia-Version von Book Authoring. Es ist schwer zu beschreiben, aber wenn Sie sich einige der Bücher dort ansehen, werden Sie sehen, wie es funktioniert

Jiaaro
quelle
2

Ich denke, Python ist eine großartige Idee. Ich würde ihm ein paar grundlegende Aufgaben geben, die er selbst erledigen muss, und ihm sagen, dass alle Sackgassen, die er trifft, wahrscheinlich durch eine Reise zu Google gelöst werden können. Zumindest für mich war es immer besser, ein Problem alleine zu lösen, als wenn mir jemand die Lösung sagte.

Einige mögliche Projekte (in keiner bestimmten Reihenfolge):

  • Münzwurfsimulator. Lassen Sie den Benutzer eine gewünschte Anzahl von Versuchen für das Umwerfen der Münze eingeben. Führen Sie es aus und zeigen Sie die Ergebnisse zusammen mit dem Prozentsatz für Kopf oder Zahl an.

  • Erstellen Sie einen Temperaturkonverter mit einem Menü, das Benutzereingaben verwendet, um auszuwählen, welche Art von Konvertierung der Benutzer durchführen möchte. Nachdem Sie die Konvertierung ausgewählt und durchgeführt haben, sollte sie zum Hauptmenü zurückkehren.

    Hier ist ein Beispiel für einen erweiterten Konverter mit derselben Idee: http://pastebin.org/6541

  • Erstellen Sie ein Programm, das eine numerische Eingabe verwendet und die Buchstabenklasse anzeigt, in die es übersetzt werden soll. Am Ende wird die Eingabe anhand von if- und elif-Anweisungen bewertet, um herauszufinden, wo sie passt.

  • Machen Sie ein einfaches Quiz, das mehrere Multiple-Choice-Fragen durchläuft, oder füllen Sie die leeren Fragen aus. Am Ende wird angezeigt, wie der Benutzer es getan hat. Er kann alle Fragen auswählen, die er will.

  • Nehmen Sie eine Eingabe von einer (vermutlich großen) Anzahl von Pennys und wandeln Sie sie in größere Stückelungen um. Zum Beispiel 149 Pennies = 1 Dollar, 1 Viertel, 2 Groschen und 4 Pennys.

  • Erstellen Sie einen einfachen Listenmanager. Sie können Listen hinzufügen / löschen und Einträge in diesen Listen hinzufügen / löschen. Hier ist ein Beispiel für einen Weihnachtslisten-Manager: http://pastebin.org/6543

  • Erstellen Sie ein Programm, das erstellt wird, und testen Sie dann, ob eingegebene Zahlen ein magisches Quadrat bilden (mit einem 2D-Array). Hier ist ein Beispielcode, der jedoch bei jedem Schritt das Quadrat ausdrucken sollte, um zu zeigen, wo sich der Benutzer in Bezug auf das Buliden des Quadrats befindet: http://pastebin.org/6544

Ich würde auch vorschlagen, ein paar Sachen mit xTurtle oder einem anderen Grafikmodul zu machen, um die Dinge durcheinander zu bringen und ihn davon abzuhalten, langweilig zu werden. Natürlich ist dies sehr viel Übungsprogrammierung und nicht das Scripting, für das viele Leute wirklich Python verwenden würden, aber die Beispiele, die ich gegeben habe, stammen ziemlich direkt aus der Zeit, als ich über Python gelernt habe, und es hat für mich großartig funktioniert. Viel Glück!

Sean O'Hollaren
quelle
2

Mach es einfach Spaß!

Erstaunlicherweise ist Scala vielleicht die einfachste, wenn Sie Kojo ausprobieren

Łukasz Lew
quelle
2

Wenn dein Bruder Rätsel mag, würde ich Python Challenge empfehlen . Ich würde es nicht als formales Lehrmittel in einem 1-zu-1-Tutorial verwenden, aber es ist etwas, was er tun kann, wenn Sie nicht zusammen sind, um sich selbst herauszufordern und Spaß zu haben.

Jacinda
quelle
2

Nachdem ich ein paar kostenlose E-Books durchgesehen hatte, fand ich, dass das beste Buch zum Erlernen des Programmierens Head First Programming war, das von O'Reily Press veröffentlicht wurde. Es verwendet Python als Sprache und bietet Ihnen Programme, an denen Sie von Anfang an arbeiten können. Sie sind alle interessanter als 'Hello World'. Es ist das Geld wert, das ich dafür ausgegeben habe, und da es schon eine Weile nicht mehr verfügbar ist, können Sie möglicherweise ein günstigeres gebrauchtes Exemplar bei Ebay oder Amazon finden.

chrisfs
quelle
1

Wenn Sie die Grundlagen des Programmierens vermitteln möchten, ohne sprachspezifisch zu sein, gibt es eine Anwendung namens Scratch , die im MIT erstellt wurde. Es soll Menschen dabei helfen, Programmierkenntnisse zu entwickeln. Wenn Benutzer Scratch-Projekte erstellen, lernen sie, Bedingungen, Schleifen usw. zu erstellen. Es gibt auch eine Community von Scratch-Projekten, aus denen Projekte heruntergeladen werden können. Auf diese Weise können Sie die Programme anderer Benutzer erkunden und sehen, wie sie erstellt wurden.

Lea Cohen
quelle
1

Ich denke, sobald er die Grundlagen (Variablen, Schleifen usw.) hat, sollten Sie versuchen, ihm zu helfen, etwas Bestimmtes zu finden, an dem er interessiert ist, und ihm dabei helfen, die Notwendigkeiten zu lernen, um dies zu erreichen. Ich weiß, dass ich viel eher geneigt und motiviert bin, etwas zu tun, wenn es mich interessiert. Stellen Sie außerdem sicher, dass er sich trotz einiger der schwierigeren Probleme abmüht. Nichts ist befriedigender als der Moment, in dem Sie es selbst herausfinden.

DanV
quelle
1

Ich lernte, wie man Probleme sprachunabhängig mit Flussdiagrammen und PDL (Program Design Language) löst . Nach ein paar Wochen lernte ich, die PDL, die ich geschrieben hatte, in eine Sprache umzuwandeln. Ich bin froh, dass ich so gelernt habe, weil ich den größten Teil meiner Jahre mit Programmieren verbracht habe, um Probleme zu lösen, ohne an eine Sprache gebunden zu sein. Welche Sprache ich verwende, war schon immer ein Implementierungsdetail und nicht Teil des Designs.

Das Problem zu lösen, indem man es in seine grundlegenden Schritte zerlegt, ist eine Schlüsselkompetenz. Ich denke, es ist eines der Dinge, die diejenigen, die programmieren können, von denen trennen, die es nicht können.

Was die Art und Weise angeht, wie Sie die Reihenfolge der Konzepte einer Sprache angehen, ist meiner Meinung nach der einfachste Weg, zu entscheiden, ob Sie ein Projekt im Auge haben und die Konzepte nach Bedarf angehen. Auf diese Weise können Sie sie anwenden, wenn sie für etwas benötigt werden, an dem Sie interessiert sind. Wenn Sie eine Sprache lernen, ist es gut, mehrere einfache Projekte im Auge zu haben und einige mit fortschreitender Komplexität. Wenn Sie sich für diese entscheiden, können Sie die benötigten Konzepte und deren Reihenfolge ermitteln.

Bruceatk
quelle
1

Ich würde empfehlen, auch einige Screencasts anzusehen - sie werden im Allgemeinen im Kontext einer bestimmten Technologie erstellt, nicht einer Sprache. Wenn jedoch Python-Code angezeigt wird, reicht dies aus :). Der Punkt ist - sie werden von einigen guten Programmierern erstellt und beobachten, wie gut Programmierer programmieren, ist eine gute Sache. Sie und Ihr Bruder könnten auch Peer-Programmierung machen, das könnte eine noch bessere Idee sein. Vergiss nur nicht zu erklären, WARUM du etwas so und nicht so machst. Ich denke, der beste Weg, Programmieren zu lernen, sind gute Beispiele und ich versuche, nicht einmal die schlechten zu sehen.

martinsb
quelle
1

Robert Read schrieb eine nützliche Anleitung, Wie man ein Programmierer ist , die einen weiten Bereich von Programmierproblemen abdeckt, die ein Anfänger hilfreich finden würde.

David
quelle