Skip to content

Commit

Permalink
Grundlagen in Python hinzugefügt.
Browse files Browse the repository at this point in the history
  • Loading branch information
barooney committed May 22, 2022
1 parent 88e511e commit 7b654a5
Show file tree
Hide file tree
Showing 30 changed files with 481 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Grundlagen Python/Einführung/lesson-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
content:
- task1
- task2
3 changes: 3 additions & 0 deletions Grundlagen Python/Einführung/lesson-remote-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
id: 105982605
update_date: Thu, 01 Jan 1970 00:00:00 UTC
unit: 0
Empty file.
11 changes: 11 additions & 0 deletions Grundlagen Python/Einführung/task1/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
def check_password():
password_file = open('SecretPasswordFile.txt')
secret_password = password_file.read()
print('Enter your password.')
typed_password = input()
if typed_password == secret_password:
print('Access granted')
if typed_password == '12345':
print('That password is one that an idiot puts on their luggage.')
else:
print('Access denied')
15 changes: 15 additions & 0 deletions Grundlagen Python/Einführung/task1/task-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
type: choice
is_multiple_choice: true
options:
- text: Python ist beliebt für Data Science
is_correct: true
- text: Python wurde 2001 veröffentlicht
is_correct: false
- text: Python ist eine Programmiersprache
is_correct: true
files:
- name: main.py
visible: true
- name: __init__.py
visible: false
custom_name: Was ist Python?
2 changes: 2 additions & 0 deletions Grundlagen Python/Einführung/task1/task-remote-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
id: 1229514484
update_date: Thu, 01 Jan 1970 00:00:00 UTC
23 changes: 23 additions & 0 deletions Grundlagen Python/Einführung/task1/task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Was ist Python

Python ist eine Programmiersprache, die zu Beginn der 1990er Jahre entwickelt wurde.
Sie wurde von Guido van Rossum am Centrum Wiskunde & Informatica in Amsterdam entwickelt.
Der Namensgeber war nicht etwa die Schlange, sondern die englische Komikergruppe Monty Python.

Mittlerweile ist Python in der Version 3 verfügbar und wird in vielen Bereichen der Informatik eingesetzt.
Besonders beliebt ist Python insbesondere bei Data Scientists und Machine-Learning-Experten, da Python hier besonders
bei Wissenschaftlern punkten konnte, die nicht programmieren können.
So ist es leicht für einen Menschen, Python-Code zu lesen und zu verstehen, auch wenn man selbst Python nicht
programmieren kann.

Wenn du den nebenstehenden Code siehst, dann kommen dir sicher einige Begriffe etwas komisch vor und vielleicht
verstehst du auch nicht alles, aber im Großen und Ganzen kannst du erkennen, dass es darum geht, ein Passwort zu
überprüfen.
Dafür findest du gleich mehrere Anhaltspunkte, auf die wir an dieser Stelle noch gar nicht weiter eingehen wollen.

Das Beispiel zeigt uns aber, dass Python-Code leicht zu lesen und zu überschauen ist.

**Um dein Wissen zu überprüfen, werden wir am Ende von Aufgaben immer mal wieder kleine Fragen einfügen, die dir helfen,
zu überprüfen, ob du das Gelernte verstanden und behalten hast:**

Welche Aussagen treffen auf Python zu?
Empty file.
14 changes: 14 additions & 0 deletions Grundlagen Python/Einführung/task2/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# In der folgenden Zeile fehlt etwas:
ergebnis = 1 + 2

# Hier erhalten wir die Information, dass wir uns zu umständlich ausdrücken:
gepflanzte_baueme = 5
if gepflanzte_baueme > 0 and gepflanzte_baueme < 4:
print("Du musst mehr Bäume pflanzen!")

# Hier liefern wir mehr Informationen als notwendig sind:
def subtrahiere_a_von_b(a, b):
return a - 5

if __name__ == '__main__':
print("Hallo Bielefeld!")
21 changes: 21 additions & 0 deletions Grundlagen Python/Einführung/task2/task-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
type: choice
is_multiple_choice: true
options:
- text: PyCharm schl&auml;gt mir vor, wie ich meinen Code besser schreiben kann.
is_correct: true
- text: PyCharm vereint viele Funktionen, die ich zum Programmieren brauche.
is_correct: true
- text: PyCharm ist nur ein Texteditor ohne besondere Funktionen.
is_correct: false
- text: PyCharm macht einem das Leben als Programmierer:in schwerer.
is_correct: false
files:
- name: main.py
visible: true
placeholders:
- offset: 53
length: 1
placeholder_text: '#füge hier eine Zahl deiner Wahl ein.'
- name: __init__.py
visible: false
custom_name: Was ist PyCharm?
2 changes: 2 additions & 0 deletions Grundlagen Python/Einführung/task2/task-remote-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
id: 383180236
update_date: Thu, 01 Jan 1970 00:00:00 UTC
80 changes: 80 additions & 0 deletions Grundlagen Python/Einführung/task2/task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Was ist PyCharm?

PyCharm ist eine sogenannte *integrierte Entwicklungsumgebung*, kurz **IDE** (Integrated Development Environment) für
Python.

Während man Python-Skripte auch in einem herkömmlichen Editor schreiben kann, so bietet der Einsatz einer IDE den
Vorteil, dass man viele Werkzeuge an einem Ort vereint, die sonst an verschiedenen Stellen zu finden und kompliziert zu
bedienen sind.

Gängige Editoren sind beispielsweise:

* Notepad (Windows)
* TextEdit (macOS)
* GEdit (Linux)

Während sie in der Erfassung von Text unschlagbar sind, so sind sie für das Schreiben von Code denkbar ungeeignet, da
sie keinerlei Unterstützung bei der Entwicklung von Software bieten.
Eine IDE hingegen analysiert deinen Code und erkennt, wenn du etwas vergessen hast oder macht dir Vorschläge, wie man
etwas besser programmieren kann.

## Syntax und Semantik - die Rechtschreibung von Programmen

Schaust du in den Code zu dieser Aufgabe, dann siehst du, dass eine IDE ähnlich wie ein Textverarbeitungsprogramm
funktioniert.
Die unterschlängelten Begriffe zeigen dir an, dass etwas entweder falsch oder unvollständig ist (wie im ersten
Beispiel).
So wollen wir den Wert einer Addition berechnen – allerdings haben wir nur einen Wert angegeben.
Hier fehlt also offensichtlich noch etwas, damit der Computer weiß, was er an dieser Stelle zu tun hat, wenn wir unser
Programm ausführen wollen.
PyCharm liefert also so etwas wie eine Rechtschreibkorrektur mit.

Du kannst an der Stelle, wo `#füge hier eine Zahl deiner Wahl ein.` steht, eine beliebige Zahl eintippen, um den roten
Schlängel in der Zeile zu entfernen.

Das zweite Beispiel ist nicht falsch, wird aber dennoch gelb unterschlängelt.
Hier haben wir ein Beispiel, das die IDE gerne "umformulieren" möchte.
Der Code, der dort steht, funktioniert, entspricht aber nicht dem vorgeschlagenen "Stil".

Während PyCharm uns bei dem ersten Beispiel nicht so recht weiterhelfen kann, weil es nicht weiß, was wir addieren
wollen, kann uns PyCharm im zweiten Beispiel helfen, unseren Code lesbarer zu machen.
Dafür gibt es die Kurzbefehle, die an entsprechenden Stellen verwendet werden können.
Klickst du auf die gelb unterschlängelte Zeile und drückst dann Strg-Enter (unter macOS Alt-Enter), dann erscheint ein
kleines Hilfsfenster.
Die Glühbirne signalisiert eine "Idee" von PyCharm und schlägt dir vor, diesen Ausdruck zu vereinfachen.
Wenn du in dem Kontextmenü nun auf "Simplify chained comparison" klickst, wird der Ausdruck lesbarer:

```
if 0 < gepflanzte_baueme < 4:
```

Wir können PyCharm also nutzen, um unseren Code lesbarer zu machen.
Auf den ersten Blick erkenne ich nun, dass der Wert `gepflanzte_baeume` zwischen 0 und 4 liegen muss, damit etwas
bestimmtes passiert.

Im dritten und letzten Beispiel ist eigentlich alles richtig, bloß haben wir einen kleinen Fehler gemacht, als wir eine
Berechnung durchführen wollten.
Statt `a - b` zu rechnen, ziehen wir von dem Wert `a` jetzt einfach immer 5 ab.
An der Stelle werden wir von PyCharm darauf aufmerksam gemacht, dass wir uns mehr Arbeit gemacht haben als notwendig.
In den Klammern haben wir die beiden sogenannten Parameter `a` und `b` angegeben, verwendet wird aber nur `a`.
Das `b` ist gräulich dargestellt.
Drückst du jetzt wieder Strg-Enter (unter macOS Alt-Enter), dann kannst du den Vorschlag "Remove Parameter" auswählen.
Damit verschwindet das `b` aus den Klammern.

Was genau all diese Dinge bedeuten, die da stehen, ist noch nicht so wichtig.
Du hast jetzt die wichtigste Komponente in Bezug zum Code-Editor in PyCharm gelernt: die "Rechtschreibkorrektur".

## Ausführen von Code

Du willst dein Programm ausführen?
Es wäre ja sehr umständlich, wenn das nicht aus PyCharm heraus ginge.
Deswegen zeigt PyCharm dir in einigen Dateien einen grünen "Play"-Pfeil in der ersten Zeile an, den du anklicken kannst.
Hast du den Fehler im ersten Beispiel behoben und eine Zahl eingefügt, dann kannst du das Programm ausführen.

Am unteren Fensterrand von PyCharm erscheint das "Run"-Fenster, das dir anzeigt, was dein Programm getan hat -
beispielsweise, welchen Text es ausgegeben hat - in unserem Fall nur "Hallo Bielefeld!"

Nun wieder eine kleine Fragerunde zur Selbstkontrolle:

**Was grenzt PyCharm als IDE von Texteditoren ab?**

4 changes: 4 additions & 0 deletions Grundlagen Python/Grundlegende Konzepte/lesson-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
content:
- task1
- task2
- task3
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
id: 2127532412
update_date: Thu, 01 Jan 1970 00:00:00 UTC
unit: 0
Empty file.
7 changes: 7 additions & 0 deletions Grundlagen Python/Grundlegende Konzepte/task1/task-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
type: theory
custom_name: Algorithmen
files:
- name: __init__.py
visible: false
- name: task.py
visible: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
id: 1605133718
update_date: Thu, 01 Jan 1970 00:00:00 UTC
32 changes: 32 additions & 0 deletions Grundlagen Python/Grundlegende Konzepte/task1/task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Algorithmen

Beim Programmieren geht es ganz oft um Algorithmen:

> Ein Algorithmus ist eine Abfolge von Anweisungen, die dazu gemacht ist, eine bestimmte Aufgabe zu lösen.
> In einem Algorithmus ist jeder Schritt definiert und dessen Ergebnis wird für den darauf folgenden Schritt verwendet.
> Die Idee ist, ein Problem auf die optimalste Weise zu lösen.
Ähnlich wie bei einem Kochrezept, an dessen Ende eine leckere Mahlzeit steht, haben wir verschiedene Zutaten, die
notwendig sind und die wir auf eine bestimmte Art und Weise zubereiten müssen.
Wir befolgen also einen Algorithmus, wenn wir kochen oder backen.

In der Programmierung ist das genau so:
Wir befolgen eine ganz strikte Abfolge von Schritten und bestenfalls können wir die so oft wiederholen, wie wir wollen:
Es kommt immer dasselbe Ergebnis dabei heraus.

In Python werden diese Probleme meist als Funktion formalisiert.
Manche kennen das noch aus der Schule – in der Mathematik war oft die Rede von Funktionen in der Form von

```
f(x) = 2x + 7
```

Algorithmen sind allgegenwärtig.
Ob beim Autofahren, beim Einkaufen, bei der Suche im Internet, bei der Sortierung von Büchern nach Erscheinungsdatum...
Welche Beispiele fallen dir ein und kannst du sie verbal beschreiben?

**Wo verwendest du Algorithmen?**

Du kannst den Editor verwenden und dir Notizen machen, vielleicht fallen dir noch andere Beispiele ein, wann du einen
Algorithmus verwendest?
Was ist die Datengrundlage, die du benötigst?
26 changes: 26 additions & 0 deletions Grundlagen Python/Grundlegende Konzepte/task1/task.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Finde den schnellsten Weg zur Selbstlerngruppe
def navigate_me_to_codeforbielelfeld(my_location):
# Schritt 1:
# Schritt 2:
pass


# Kaufe alle Sachen auf der Einkaufsliste - möglichst schnell und mit möglichst kurzem Weg!
def do_grocery_shopping(shopping_list):
# Schritt 1:
# Schritt 2:
pass


# Finde eine Information im Internet - sie muss richtig sein und ich will nicht lange danach suchen
def search_for_one_thing_in_the_web(thing):
# Schritt 1:
# Schritt 2:
pass


# Sortiere meine Bücher nach Erscheinungsjahr.
def sort_my_books_for_release_year(books):
# Schritt 1:
# Schritt 2:
pass
Empty file.
14 changes: 14 additions & 0 deletions Grundlagen Python/Grundlegende Konzepte/task2/task-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
type: theory
custom_name: Eingaben und Ausgaben
files:
- name: task.py
visible: true
placeholders:
- offset: 0
length: 30
placeholder_text: '# Frag die nutzende Person nach ihrem Namen.'
- offset: 32
length: 28
placeholder_text: '# Gib eine Begrüßung aus'
- name: __init__.py
visible: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
id: 1365067729
update_date: Thu, 01 Jan 1970 00:00:00 UTC
73 changes: 73 additions & 0 deletions Grundlagen Python/Grundlegende Konzepte/task2/task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Eingaben und Ausgaben

Algorithmen nutzen Daten.
Diese Daten kann man entweder manuell erfassen oder aus Dateien laden – oder direkt von einem Server in das eigene
Programm einfließen lassen.

Wir wollen nun ein kleines Programm schreiben, das nach dem Namen der nutzenden Person fragt.
Anschließend wollen wir eine personalisierte Begrüßung ausgeben.

Python bietet die beiden Methoden `input` und `print` an, mit denen wir über unser Programm kommunizieren können.

## Eingabe

`input` ist eine Funktion, mit der wir eine Eingabe anfordern können:

```python
eingabe = input()
```

Wenn wir diese Zeile in unseren Code schreiben und das Programm ausführen, dann taucht unten das "Run"-Fenster auf, es
passiert aber nichts weiter.
Das ist richtig, weil das Programm darauf wartet, dass du Text eingibst.
Erst, wenn du auf Enter drückst, wird deine Eingabe verarbeitet und wird dann beispielsweise in `eingabe` gespeichert.

`eingabe` ist dabei eine Variable.
Du kannst dir eine Variable wie eine große Box vorstellen, in der du alles verstauen kannst.
Auf die Box klebst du dann die Beschriftung `eingabe` und immer, wenn du wissen willst, was die Eingabe war, dann kannst
du die Box hervorholen und hineinschauen.

Du kannst allerdings auch wieder etwas anderes in die Box legen:

```python
eingabe = input()
eingabe = "Mir gehts gut und selbst?"
```

Der alte Wert – zum Beispiel der Name, nach dem wir gefragt haben, ist dann aber weg.

Die Funktion `input` erlaubt uns aber auch, noch einen Text mitzugeben, der angezeigt werden soll, wenn die nutzende
Person etwas eingeben soll:

```python
name = input("Wie heißt du? ")
```

## Ausgabe

Nachdem wir einen Namen erhalten haben wollen wir die nutzende Person nun auch mit ihrem Namen begrüßen.

Dafür nutzen wir den Befehl `print`, der historisch gesehen früher wirklich etwas ausgedruckt hat, heute aber Text auf
dem Bildschirm ausgibt:

```python
print("Hallo Bielefeld!")
```

In den Klammern geben wir den sogenannten Parameter an, der ausgegeben werden soll.
Wir können zum Beispiel auch den Namen ausgeben.
Dazu können wir folgenden Code schreiben:

```python
print(name)
```

Um verschiedene Texte zusammen auszugeben, können wir diese mit einem Plus verbinden:

```python
name = input("Wie heißt du?")
print("Hallo " + name)
```

**Kannst du auch nach einem Nachnamen fragen und in der Form "Vorname Nachname" und "Nachname, Vorname" ausgeben
lassen?**
3 changes: 3 additions & 0 deletions Grundlagen Python/Grundlegende Konzepte/task2/task.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
name = input("Wie heißt du? ")

print("Hallo " + name + "!")
Empty file.
25 changes: 25 additions & 0 deletions Grundlagen Python/Grundlegende Konzepte/task3/task-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
type: theory
custom_name: Variablen
files:
- name: __init__.py
visible: false
- name: task.py
visible: true
placeholders:
- offset: 62
length: 39
placeholder_text: '# Frag die nutzende Person nach ihrem Alter'
- offset: 102
length: 23
placeholder_text: '# Wandle den eingegebenen Text in eine ganze Zahl um'
- offset: 126
length: 17
placeholder_text: '# Rechne 1 zu dem Alter hinzu und speichere es in der selben
Variablen'
- offset: 144
length: 23
placeholder_text: '# Konvertiere das Alter wieder in einen Text'
- offset: 168
length: 55
placeholder_text: '# Gib das berechnete Alter wieder aus und erkläre dem Nutzer,
was die Zahl bedeutet'
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
id: 1908787339
update_date: Thu, 01 Jan 1970 00:00:00 UTC
Loading

0 comments on commit 7b654a5

Please sign in to comment.