https://de.wikipedia.org/wiki/Konjunktive_Normalform
Dort sind Links zu
https://de.wikipedia.org/wiki/Verfahren_nach_Quine_und_McCluskey
und
Lass zuerst zwei konzentrische Fünfecke mit Turtle zeichnen!
Dann mit kantigrafik
und Trigonometrie.
dann vielleicht Escherbilder malen? Kaleidoskop?
Vermutlich ist “python -m pip install” besser als “pip install”:
relativ neu: https://stackoverflow.com/questions/60782785/python3-m-pip-install-vs-pip3-install
https://www.pygame.org/wiki/GettingStarted
test pygame with “python -m pygame.examples.aliens”
Example files are located in
~/.local/lib/python3.10/site-packages/pygame/examples
https://stackoverflow.com/questions/71742916/no-module-named-pygame-after-using-pip
Command palette: “Python: Select interpreter”
/usr/lib/python3.10/turtledemo
https://docs.python.org/3/library/turtle.html#module-turtledemo
Ivo nimmt https://pypi.org/project/graphics.py/
Jeweils “spätester” Termin (vermutlich sind einige deutlich schneller):
in terminal: python -m turtledemo
Bei logischen Schaltungen: Nimm Schaltjahr Beispiel auf! Wahrheitstabelle
Bei Unicode: KCharSelect zum Auswählen/Finden von Unicode-Symbolen. Wenn es nur um Emojis etc. geht, tut es der Emoji-Selector (oder ibus?)
Online Python-Shell: https://pyodide.org/en/latest/console.html
Debugger für pygame in vs code? Geht schon so halbwegs, setze Breakpoint und bewege Spielfeld weg von VSCode-Fenster (etwa anderer Bildschirm).
Pygame: Ohne update, einfach reinzeichnen? (Punkte gehen, so wie ich im Chaosgame) (Gibt auch pixelarray in pygame, kann wohl direkt reinschreiben)
Schreibe falsches Programm. Lass es debuggen!
Als Art Verständnistest. “Spass mit der Turtle: jedes Thema, eine Aufgabe!”
Labyrinth/snake/roter Kasten mit Tastatursteuerung mit while!
vorher Listen? Dann könnte for-loop über listen laufen lassen. Reicht aber eigentlich auch, wenn ich das mache, sobald wir Listen haben.
Mehr Zeit einplanen, denn ab jetzt kann nette Aufgaben stellen.
Podcast mit Al Sweigart gehört, er hat neues Buch.
Schlechte Beispiele sind: Fakultät und Fibonacci (Fakultät liefert stackoverflow bei Argument 1000, Fibonacci wohl schon bei 50 länger als Universum).
Gut alles baumartige: Weg aus Irrgarten finden! Turtle für fraktale Graphiken.
recursive function: Muss sich selbst aufrufen (recursive case) und base case haben.
In Python maximal Rekursionstiefe 1000, wird von Interpreter abgefangen (kann man aber erhöhen, ab ca. 2700 stürzt Betriebssystem ab), schon bei trivialem sich selbst aufrufendem Miniprogramm. (Vorteil von Interpreter zu Compiler).
Jede Rekursion lässt sich auch mit Schleife=Iteration und Stack erledigen
Misnomer sind: bottom-up recursion (ist gar keine Rekursion) und top-down recursion (das ist jede Rekursion). Beides per Fibonacci leicht erläuterbar.
Ebenso ist dynamic programming misnomer (nur wegen NSA-project so genannt, wohl von Bell(?), wollte Geld). Ist im wesentlichen Schleife mit Stack statt Rekursion, in der wohl diverses mehrfach berechnet wird. Wie bei Fibonacci recursive.
auch sowas wie tail optimazation ist nur Auflösen einer Rekursion durch Schleife mit Stack.
Rekursion unnötig, falls nur ein rekursiver Aufruf am Ende, dann besser Schleife.
dir
erklären. Dann “Drei Chinesen …” ersetze. Uppercase.if
? Dann wird range
klarer…random
bzw. randint
dir(s)
wobei s
String istr“er sagte:“Hallo \n”
oder so ähnlich. Alternative mit Escape-Sachen oder verschiedenen Anführungszeichen. Wie gebe \n
mit print aus?Am liebsten Open Book. Wie verhindere ich stupides Kopieren/Emailen der Lösungen?
Bei jeder Aufgabe irgendwo deinen Namen einbauen! Als Variablennamen, als Ausgabe, n = Anzahl Buchstaben in deinem Namen.
Lasse Programm debuggen!
list(range(30))
hinschreiben?if
and while
), Vergleiche, gleich, ungleich, groesser, kleinerals Bonus-Sache erklärt:
Muss testen, ob das unter Windows geht…
Ja, muss jedoch vorher:
pip install numpy
pip install opencv-python
curses gibt es nicht (unter Linux ist das im Python module index, also Standard), es gibt aber windows-curses, was zwar läuft, aber nicht richtig.
Schreibe ein Programm, das einen Bankautomat simuliert: Der Benutzer gibt den gewünschten Betrag (in Franken) ein, der Computer gibt diesen Betrag in Banknoten aus und versucht dabei, die Anzahl der ausgegebenen Noten möglichst gering zu halten.
Welche Banknoten es gibt, erfährst du zum Beispiel hier: https://www.snb.ch/de/iabout/cash/history/id/cash_history_serie9
DIESE AUFGABE IST VIELLEICHT EINFACH ÜBERFLÜSSIG UND KANN AUSGELASSEN WERDEN (UND ICH SOLLTE SIE LOESCHEN …).
Bis jetzt haben wir auf dieser Seite fast nur in der Python-Shell gearbeitet. Alles geht natürlich auch in Python-Programmen.
Welche Ausgaben erwartest du bei dem folgenden Programm? Es gibt 18 Mal “True” oder “False” aus. Notiere die 18 Ausgaben, die du erwartest, auf einem Zettel.
Prüfe deine Antworten, indem du das Programm abspeicherst und laufen lässt! Zum Erleichtern des Vergleichs habe ich alle print
-Befehle durchnummeriert (durch die Zahl in der jeweiligen Kommentarzeile davor).
# 1 print(True and False) # 2 print(True or True) # 3 print(2 < 5) # 4 print((235236235 < 2346346) or True) a = (5 != 6) # a ist eine Boolesche Variable # Es ist erlaubt, hier die Klammern wegzulassen, denn das Vergleichszeichen != bindet staerker als das Zuweisungszeichen =. # Klammern verbessern aber oft die Lesbarkeit und dienen der Fehlervermeidung. # (Nur als Vielprogrammierer wird man sich genau merken können, was staerker bindet.) # 5 print(a) b = not (False or (True and (2 < 5))) # 6 print(b) # 7 print(True != True) # 8 print(True == (False or True)) # 9 print((2 > 3) == (-1 >= 0)) # Die Leerzeichen sind optional, dienen aber der besseren Lesbarkeit: # print((2>3)==(-1>=0)) # hat dieselbe Bedeutung. # Ebenso dienen Leerzeilen der besseren Lesbarkeit. # 10 print(2 * "python" == "python" + "python") # 11 print(not("Python" != "python")) antwort = "Sanggalle" # 12 print(antwort == "St. Gallen") x = 100 # 13 print(4 <= x and x < 10) x = -10 # 14 print(4 <= x and x < 10) x = 10 # 15 print(4 <= x and x < 10) x = 4 # 16 print(4 <= x and x < 10) # 17 print(x*x*x == x**3) x = 2 # 18 print(x+x+x+x == x**3)
Schreibe nun eine Funktion mit drei Parametern setzeZustand(x, y, alpha)
, die die Turtle ohne zu zeichnen auf den Punkt (x, y)
setzt mit Blickrichtung alpha
.
Verwende diese Funktion und die Funktion quadrat(s)
aus der vorigen Aufgabe, um das folgende Bild zu erstellen!
Verschachtelte (und gedrehte) Quadrate?
Schreibe Buchstaben/Zahlen! Funktion für jeden Buchstaben! (das ist jedenfalls sinnvoll)
https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:snr:informatik:bruehl-2022:funktionen
Dort gefallen mir besonders die ineinanderliegenden $n$-Ecke.
Diverse Erklärtexte dort sind auch gut.
Quadrat fixer bzw. variabler Seitenlänge.