https://compute-it.toxicode.fr/?progression=python
https://silentteacher.toxicode.fr/hour_of_code.html?theme=basic_python
Es existieren unterschiedliche Ansätze, Software zu entwickeln. Dabei werden verschiedene Programmierparadigmen unterschieden.
Ein Paradigma (Plural Paradigmen) ist eine grundsätzliche Denkweise.
Übersetzt aus dem griechischen bedeutet es „Beispiel, Vorbild, Muster“ oder „Abgrenzung, Erklärungsmodell, Vorurteil“; auch „Weltsicht“ oder „Weltanschauung“. Quelle: https://de.wikipedia.org/wiki/Paradigma
Ein Programmierparadigma gibt die Werkzeuge vor, mit denen Probleme gelöst werden können.
Python folgt mehreren Paradigmen
Programme werden in Prozeduren (auch Funktionen oder Methoden genannt) unterteilt. Der Fokus liegt auf einer schrittweisen Abarbeitung von Anweisungen, die nacheinander (sequenziell) ausgeführt werden. Typische Merkmale sind Sequenz, Verzweigung/Bedingung und Schleifen/Wiederholung.
Python biete 2 Arten von Schleifen:
Sieht in Python etwas komisch aus. Beispiel für eine Schleife, die sich 5 mal wiederholt mit der Ausgabe 0, 1, 2, 3, 4
for i in range(5):
print(i)
Die Funktion range(zahl) erzeugt die Liste [0, 1, 2, 3, 4]. Bei ersten Schleifendurchlauf erhält die Variable i den Wert 0, dann 1, 2 usw.
Allgemein:
for VARIABLENNAME in LISTE:
...
...
...
Die range-Funktion kann auf verschiedene Art und Weise aufgerufen werden.
| Beispiel | Ergebnis | |
|---|---|---|
| range(bis) | range(5) | [0, 1, 2, 3, 4]] |
| range(von, bis) | range(3, 6) | [3, 4, 5] |
| range(von, bis, schritt) | range(4,10, 2) | [4, 6, 8] |
| range(0, -10, -2) | [0, -2, -4, -6, -8] |
# Nutzer kann festlegen, von welcher Zahl, bis zu welcher Zahl in welchem Schritt gezählt werden soll
# Eingabe
von = int(input("von: "))
bis = int(input("bis: "))
schritt = int(input("schritt: "))
# Verarbeitung
zaehler = 0
for zahl in range(von, bis, schritt):
print(zahl)
zaehler = zaehler + 1
# Ausgabe
print("Er wurden", zaehler, "Zahlen ausgegen")
Aufgabe Countdown
Implementieren Sie einen Countdown.
Ein Nutzer gibt eine Zahl ein, von der der Countdown starten soll. Zudem die Nachricht eingegeben, die am Ende des Countdowns ausgegeben werden soll. Danach zählt der Countdown von der Startzahl bis zur 0 und gibt die Nachricht aus.
Zusatz: Das Programm soll 1 Sekunde vor der nächsten Ausgabe warten (sleep)
Beispieldurchlauf
Start bei: 5
Nachricht: Happy New Year
Noch 5
Noch 4
Noch 3
Noch 2
Noch 1
0
Happy New Year
Lösung
# Todo
Ist nicht klar, wie häufig sich etwas wiederholt, nutzen wir die bedingte Schleife "while". Beispiele:
while BEDINGUNG:
# Do Something
# Do Something
# Do Something
# Nach der Schleife gehts hier weiterDie Bedingung hat den Datentyp Boolean (True/False).
Aufgabe
a) Überlege was folgenden Programme ausgeben.
b) Führe die Programme aus und überprüfe deine Hypothese. Nutze dabei den Debug-Modus um jeden Schritt nachvollziehen zu können
# Diese Programm macht: ________
while False:
print("dead code")
# Diese Programm macht: ________
while True:
print("ich bin toll")
# Diese Programm macht: ________
durchlauf = 1
while durchlauf <= 3:
print("Durchlauf:", durchlauf)
durchlauf = durchlauf + 1
import random
# Diese Programm macht: ________
zahl = 0
anzahl_versuche = 0
while zahl != 42:
zahl = random.randint(0,100)
anzahl_versuche = anzahl_versuche + 1
print("Die 42 wurde nach", anzahl_versuche, "Versuchen gefunden")
# Diese Programm macht: ________
summe = 0
zahl = 1
while zahl <= 100:
summe = summe + zahl
zahl = zahl + 1
print("Summe der Zahlen von 1 bis 100 ist", summe)
Aufgabe Userkonto
Implementieren Sie das Anlegen eines Userkontos.
Der User gibt nacheinander folgende Informationen ein: Vorname, Nachname, Alter und Passwort. Das Passwort muss um Tippfehler auszuschließen danach erneut eingegeben werden. Solange beide Passwörter nicht identisch sind, so müssen beide erneut eingeben werden.
Das Programm gibt aus "Ihr Konto wird angelegt, bitte warten Sie kurz". Danach zählt ein Countdown von 5 bis zur 0. Es wird "Ihr Konto wurde angelegt" ausgegeben.
Das Programm gibt "Hallo VORNAME, bitte logge dich mit deinem Passwort ein" aus. Wenn das Passwort richtig ist, erscheint: "Du bist eingeloggt". Sonst "Passwort falsch, versuche es erneut".
Nach erfolgreichem Login: Ist der Nutzer unter 16 Jahren erscheint die Meldung "Nur Kinderinhalte verfügbar". Bei unter 18 Jahren erscheint "Inhalte eingeschränkt". In allen anderen Fällen erscheint "Alle Inhalte verfügbar".
Alles hat in Python einen Datentyp. Folgende Datentypen stehen zur Verfügung.
| String | Integer | Float | Boolean |
|---|---|---|---|
| str | int | float | bool |
| Texte | Ganzzahlen | Fließkommazahlen | Wahrheitswerte |
| "Hello", "Welt" | 5, -6 | 3.17 | True, False, 5 > 4 |
# a) Gebt die Werte für jede Zeile mit der print-Methode aus.
# b) Gebt den Typen für jede Zeile an. Schreibt ihn in einem Kommentar hinter die Zeile.
# c) Überprüft eure Vermutung mit der type-Funktion
"Hallo"
"Welt"
'!'
3
99
-129303945
3.14
"3"+"7"
3+7
3-7
5*5
2/1
True
False
5 > 7
5 < 7
5 == 6
5 != 5
True and False
True or False
# Die nächste Zeile kann ignoriert werden
a = "test"
a
# d) Korrigiert die Fehler in folgenden Zeilen.
# 5 / 0
# 5 = 5
# "5" + 4
# e) Welchen Typ haben folgende Zeilen? Nutze die type-Funktion (type(...)).
#input("Wie alt bist du: ")
#print
#input
Eine Funktion (oder Methode) ist ein wiederverwendbarer Block von Code, der eine bestimmte Aufgabe ausführt.Man kann Sie verwenden, indem Klammern hinter den Namen schreibt. Falls die Funktion Parameter (Eingaben) erwartet, werden diese in die Klammern geschrieben
Python stellt verschiedene Funktionen/Methoden zur Verfüng
| Name | Beschreibung | Parameter | Rückgabe / Ergebnis | Beispiel |
|---|---|---|---|---|
| input | Ermöglicht dem Nutzer Eingaben | String, der dem Nutzer angezeigt wird. "Die Frage, die gestellt wird" | Eingabe des Nutzers (String) | name = input("Wie heißt du? ") alter = input(""Wie alt bist du? ") farbe = input("Lieblingsfarbe?") |
| Gibt Werte aus | Beliebig viele von beliebigem Typ | Keine (None) | print("Hallo Welt") print("Hallo", name) print(1,1.1,True,"Hallo") |
|
| int | Wandelt einen String in einen Integer (Text in Zahl) | String | Integer | int("5") # 5 int("-10") # -10 |
| str | Wandelt in beliebigen Datentyp in einen String um | Beliebig | String | str(5) # "5" str(-3.14) # "-3.14" |
Editor für grafische Programmierung: https://strivemath.org/ide
Dokumentation: https://p5js.org/reference/ (Achtung in JavaScript)
CheatSheet: https://bmoren.github.io/p5js-cheat-sheet/
Aufgabe:
Implementieren Sie die einfachen Formen in folgendem Dokumentaufgaben_strive.docx
Lösung 500 Kreise
def setup():
createCanvas(windowWidth,windowHeight)
def draw():
background("black")
for i in range(500):
fill(random(255),random(255),random(255))
circle(random(windowWidth), random(windowHeight), random(1,20))
Aufgabe:
Implementieren Sie ein Klickgame mit folgender Hilfestellung.
Hausaufgabe
Fügt die TimeToLive (letzter Eintrag aus dem Aufgaben-Dokument) hinzu.
# Attribute des Spiels = alles was gespeichert werden muss
position_x = random(windowWidth)
position_y = random(windowHeight)
farbe = (random(255), random(255), random(255) )
durchmesser = random(30,150)
geschwindigkeit_x = random(-10,10)
geschwindigkeit_y = random(-10,10)
punkte = 0
# einmal zum Start ausgeführt
def setup():
createCanvas(windowWidth,windowHeight)
# für jeden Frame ausgeführt
def draw():
# nur nötig, wenn außerhalb definierte Variablen geändert werden
global position_x, position_y, geschwindigkeit_x, geschwindigkeit_y
# Zeichenfläche leehren
background("black")
# Ball zeichnen
fill(farbe)
circle(position_x, position_y, durchmesser)
# Ballbewegung: Berechnung der neuen Position
position_x = position_x + geschwindigkeit_x
position_y = position_y + geschwindigkeit_y
# wenn Ball außerhalb, Bewerungsrichtung umkehren (* -1)
if position_x <= 0 or position_x >= windowWidth:
geschwindigkeit_x = geschwindigkeit_x * -1
if position_y <= 0 or position_y >= windowHeight:
geschwindigkeit_y = geschwindigkeit_y * -1
# Punktestand
fill(255)
text("Punkte: " + str(punkte),10,10)
def mouseClicked():
# alle außerhalb definierten Variablen, die geändert werden
global punkte, position_x, position_y, durchmesser, geschwindigkeit_x, geschwindigkeit_y, farbe
print("Maus wurde geklickt an", mouseX, mouseY)
abstand = dist(mouseX,mouseY,position_x, position_y)
# Wenn getroffen
if (abstand < durchmesser / 2):
print("getroffen")
punkte = punkte + 1
# neuer Ball
position_x = random(windowWidth)
position_y = random(windowHeight)
durchmesser = random(20,60)
geschwindigkeit_x = random(-10,10)
geschwindigkeit_y = random(-10,10)
farbe = (random(255), random(255), random(255))
else:
print("nicht getroffen")
punkte = punkte - 1