Skip to content
dodonator edited this page Oct 8, 2022 · 21 revisions

PythonfooLite

Einleitung

"The only way to learn a new programming language is by writing programs in it." - Dennis Ritchie

Das PythonfooLite beschäftigt sich dezidiert mit Programmieranfängern oder Python-Neulingen. Aus der Erfahrung heraus, das diese im sich "normalen" Pythonfoo abgehängt fühlen, widmen wir die ersten beiden Donnerstage jedes Monats den Neulingen. Wer Lust hat kommt einfach vorbei, jeweils am ersten oder zweiten Donnerstag im Monat ab 18:00 im Chaosdorf. Es hilft einen tragbaren Rechner mitzubringen, auf dem man auch Programme installieren kann. Vorwissen über Programmierung wird nicht benötigt.

Python

Wir beschäftigen uns beim Pythonfoo mit Python in der Version 3.x. Python ist eine Programmiersprache, die leicht zu lernen aber schwer zu meistern ist ("easy to learn, hard to master"). Das soll uns aber nicht abschrecken. Python verzichtet auf einige Eigenheiten populärer Sprachen (wie z.B. Java oder C), büßt somit Performanz ein, ist allerdings leichter zu lernen. Wenn man sich lange genug mit Python beschäftigt, ist es problemlos möglich andere Programmiersprachen zu lernen, da Grundlegende Konzepte schon aus der Theorie und Praxis bekannt sind und auf diesen aufgebaut werden kann.

Sprache

Grundsätzlich sind alle Texte in Deutsch verfasst, die Codebeispiele jedoch enthalten teilweise englische Namen, da auch die Programmiersprache mit englischen Begriffen arbeitet. An einigen Stellen, werden in den Texten englische Begriffe verwendet, was meistens daran liegt, dass die deutsche Übersetzung sehr sperrig ist ("integer" <-> "ganze Zahl", "float" <-> "Fließkommazahl") oder weil der englische Begriff der weitaus gebräuchlichere ist.

Glossar

Im Wiki des Github Repositories findest du ein Glossar, in dem die meisten Begriffe kurz erklärt werden.

Kontakt und Feedback

Falls du Anregungen, Fragen, Einwände oder Ideen hast, kannst du uns natürlich an den ersten beiden Donnerstagen im Monat im Chaosdorf erreichen, oder eine Nachricht im Github Repository hinterlassen oder eine E-Mail an pythonfoo@chaosdorf.de schicken, zudem bietet GitHub noch ein Issue System, um Fehler im Repository zu melden. Wir sind über jegliche Art von Feedback dankbar. Da wir nur zwei Studenten sind, die Spaß daran haben, anderen die Grundlagen der Programmierung in Python näher zu bringen, sind wir natürlich weder allwissend oder unfehlbar. Die Codebeispiele und das Wiki im Repository sind insofern als "work in progress" zu sehen, dennoch sind wir für jegliches Feedback dankbar. Wir sind stetig damit beschäftigt die Codebeispiele und beiliegenden Texte zu erweitern und verbessern, auch in diesem Zusammenhang freuen wir uns über jegliches Feedback.

Gliederung

Wir haben den Ablauf in Level unterteilt, die aufeinander aufbauen. Das sorgt dafür, dass wir den Ablauf individuell an den Kenntnisstand der Anwesenden anpassen können, was es nicht langweilig werden lässt. Die Level sind unten grob skizziert und geben einen Überblick. Zu jedem Level sind Stichwörter aufgeführt, die sich entweder im Glossar oder im Internet suchen lassen, und einen Einblick geben sollen um was es geht, damit du falls du bereits Erfahrung im Programmieren mit Python oder einer anderen Programmiersprache hast, weißt wo du am besten einsteigen kannst.

Zeiteinteilung

Da die Level nicht gleich umfangreich sind und die Geschwindigkeit des Durchgehens stark vom Kenntnisstand bzw. eventuellen Vorkenntnissen abhängig ist, ist es schwierig allgemein zu sagen, wie viel Zeit für die Level eingeplant werden muss; die Erfahrung zeigt aber, dass die ersten 5 Level gut in einen bis zwei Abenden à 3 Stunden beendet werden können. Da zwischen Level 5.5 und Level 6 ein großer inhaltlicher Sprung besteht, bietet es sich an zwischen den Levels eine Pause zur Auffrischung und Wiederholung einzulegen. Zudem ist der Einstieg in Level 6 zuerst theoretisch, weshalb es besser ist, ausgeruht in das Level zu starten.

Aufgaben

Zur Auffrischung und Anwendung des Gelernten, bieten wir zu den meisten Level Aufgaben an, die sich auf das Level beziehen und der Übung dienen sollen. Die Aufgaben sind natürlich vollkommen freiwillig wir schauen gerne über Lösungen drüber. In einigen Levels gibt es auch Beispiellösungen zu den Aufgaben. Da es für uns schwierig ist den Schwierigkeitsgrad der Aufgaben richtig zu wählen, sind wir hier auf Feedback angewiesen.

Level 0

Level 0 ist Programmieranfänger gedacht und klärt die Grundlagen von Programmierung im Allgemeinen und mit Python.

Stichwörter:

  • Programmiersprache
  • Anweisung
  • Compiler
  • Interpreter
  • hello_world.py
  • Code

Level 1

Level 1 beginnt mit dem Programmieren einfacher Programme in Python und klärt Grundlegende Konzepte der Programmierung in Python, die sich aber auch auf andere Programmiersprachen übertragen lassen.

Stichwörter:

  • Variable
  • Typ
  • Wert
  • Ausdruck
  • Integer
  • Float
  • String
  • Eingabe
  • Ausgabe
  • Schlüsselwort
  • Kommentar

Level 2

Level 2 führt eine erste Kontrollstruktur ein, welche ein wichtiges Element jeder Programmiersprache darstellt. Des Weiteren wird ein neuer Typ eingeführt.

Stichwörter:

  • Programmablauf
  • if-Bedingung
  • while-Schleife
  • Boolean

Level 3

Level 3 beschäftigt sich nun mit einer weiteren Kommandostruktur, den Schleifen und führt dazu drei neue Typen ein. Nach Abschluss von Level 3, kann in der Theorie jedes Programm schon geschrieben werden.

Stichwörter:

  • for-Schleife
  • Liste
  • Tupel
  • Dictionary
  • Sets

Level 4

Level 4 beschäftigt sich mit dem Lesen und Bearbeiten von Textdateien.

Stichwörter:

  • pathlib
  • shutil
  • Dateien lesen
  • Dateien speichern
  • Dateien verschieben
  • Dateien löschen

Level 5

Level 5 beschäftigt sich mit dem Erstellen von Funktionen (ob mit oder ohne Parameter / Übergabewert) und Rekursion.

Stichwörter:

  • Funktion
  • Gültigkeitsbereich
  • Rekursion
  • Rückgabewert
  • Docstrings

Level 5.5

Dieses Level beschäftigt sich mit Themen, die in bisherigen Level nicht behandelt wurden, weil sie nichts mit Python zu tun haben oder nicht dem Fortschritt entsprachen. Dennoch sind diese Themen, nicht nur für die Programmierung in Python, sondern auch in anderen Programmiersprachen, sehr wichtig.

Stichwörter:

  • Texteditor
  • IDE
  • Git und GitHub
  • PEP8
  • s.format()
  • Bash / Terminal / Shell
  • Fehlersuche
  • Refactoring

Level 6

In Level 6 geht es um Konsolen-Anwendungen. Diese kann man grob in zwei Arten unterteilen:

  • Programme, die nur Parameter entgegennehmen und etwas ausgeben
  • Programme, die interaktiv arbeiten

Einfache Formen des letzteren Typs kamen bereits in den vorigen Level vor.

Stichwörter:

  • argparse
  • curses

Level 7 (OOP 1)

Level 7 widmet sich dem Bereich der Objektorientierten Programmierung. Dieses Konzept hat auch in vielen anderen Programmiersprachen eine große Bedeutung. In diesen Level werden die Kompetenzen vermittelt um eigene Typen zu definieren, Klassen oder Module zu schreiben, sowie ein grundsätzliches Verständnis von Objektorientierter Programmierung.

Stichwörter:

  • Klassen
  • Bibliotheken
  • Objekt
  • Module
  • Imports
  • Attribute und Methoden
  • Vererbung
  • Überladung
  • super()
  • isInstance() und is

Level 8

Level 8 beschäftigt sich mit Dingen, die thematisch in andere Level gehören, aber nicht zu deren Kenntnisstand passen.

Exkurse:

  • turtle - Ein Modul zum Steuern einer Schildkröte
  • random - Ein Modul dass verschiedene Methoden für Pseudozufallszahlen bereitstellt

Stichwörter:

  • Generatoren
  • Decoratoren
  • Exceptions
  • map() und zip()
  • assert

Folgendes ist eher fortgeschritten.

Level 9 Nebenläufigkeit und Alternativen

  • Threads
  • multiprocessing
  • asyncio

Level 10 GUI

Es gibt wahnsinnig viele Möglichkeiten, grafische Benutzeroberflächen mit Python zu realisieren. Wir beschränken uns hier auf Qt 5 als GUI-Toolkit. nur kurz anreißen!

Aufgaben

Ein Hauptfenster soll einen Button und ein Textfeld enthalten. Beim Klick auf den Button soll der Inhalt des Textfelds in einem Dialog angezeigt werden.

Level 11 Web

Webanwendungen sind ein häufiger Einsatzzweck von Python.

Aufgaben

  • Hallo Welt! als Webapp

Level 12 Packaging und Repos

Mit setuptools und pip kann man Pakete erstellen, packen und installieren.

  • pypi als Repository
  • Pakete aus dem Internet herunterladen und installieren
  • Pakete erstellen
  • Pakete bauen
  • Pakete hochladen