Last active
November 10, 2025 12:23
-
-
Save horstjens/947188ab48389cecb719fe10c4b8c69c to your computer and use it in GitHub Desktop.
termin 09
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # zuordnung von Puzzlesteinen zu Puzzlespielen kann auf | |
| # verschiende Arten erfolgen | |
| class Lager: | |
| meine_spiele = [] # class variable | |
| class Puzzlespiel: | |
| def __init__(self, bild, anzahl_steine, zustand): | |
| self.bild = bild | |
| self.anzahl_steine = anzahl_steine | |
| self.zustand = zustand | |
| # self referenziert DIESE Instanz | |
| Lager.meine_spiele.append(self) | |
| self.steine = [] # leere Liste | |
| class Puzzlestein: | |
| def __init__(self, zustand, anzahl_glatten_Kanten, anzahl_zapferl, anzahl_buchten): | |
| self.zustand = zustand | |
| self.anzahl_glatten_Kanten = anzahl_glatten_Kanten | |
| self.anzahl_zapferl = anzahl_zapferl | |
| self.anzahl_buchten = anzahl_buchten | |
| # instanzen erzeugen | |
| Puzzlespiel("pferd.jpg", 500, "gut") | |
| Puzzlespiel("wasserfall.jpg", 1000, "leicht beschädigt") | |
| Puzzlespiel("wiese.jpg", 200, "gut") | |
| for p in Lager.meine_spiele: | |
| #print("alle attribute dieser instanz") | |
| #print(p.__dict__) # zeigt alle eigenschaften vom puzzlespiel | |
| p.steine.append(Puzzlestein("gut", 0, 4, 0)) | |
| p.steine.append(Puzzlestein("gut", 1, 3, 1)) | |
| p.steine.append(Puzzlestein("gut", 0, 2, 2)) | |
| for spiel in Lager.meine_spiele: | |
| print("spiel instanz:") | |
| print(spiel.__dict__) | |
| print("spielsteine:") | |
| for steinchen in spiel.steine: | |
| print(steinchen.__dict__) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # zuordnung von Puzzlesteinen zu Puzzlespielen kann auf | |
| # verschiende Arten erfolgen | |
| class Lager: | |
| meine_spiele = [] # class variable | |
| class Puzzlespiel: | |
| def __init__(self, bild, breite, höhe): | |
| self.bild = bild | |
| self.breite = breite | |
| self.höhe = höhe | |
| self.anzahl_steine = breite * höhe | |
| # self referenziert DIESE Instanz | |
| Lager.meine_spiele.append(self) | |
| self.steine = [] # leere Liste | |
| class Puzzlestein: | |
| def __init__(self, nummer, oben, unten, links, rechts, beschädigt=False): | |
| self.nummer = nummer | |
| self.oben = oben | |
| self.unten = unten | |
| self.links = links | |
| self.rechts = rechts | |
| self.beschädigt = beschädigt | |
| # instanzen erzeugen | |
| if __name__ == "__main__": | |
| Puzzlespiel("wasserfall.jpg", 50, 20) | |
| print(Lager.meine_spiele) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # zuordnung von Puzzlesteinen zu Puzzlespielen kann auf | |
| # verschiende Arten erfolgen | |
| import random | |
| class Lager: | |
| meine_spiele = [] # class variable | |
| class Puzzlespiel: | |
| def __init__(self, bild, breite, höhe): | |
| self.bild = bild | |
| self.breite = breite | |
| self.höhe = höhe | |
| self.anzahl_steine = breite * höhe | |
| # self referenziert DIESE Instanz | |
| Lager.meine_spiele.append(self) | |
| self.steine = [] # leere Liste | |
| def erzeuge_steine(self): | |
| gegenteil = {"zapfen":"loch", | |
| "loch":"zapfen"} | |
| i = 0 | |
| for y in range(self.höhe): | |
| for x in range(self.breite): | |
| pass | |
| #stein = Puzzlestein(nummer=i, | |
| class Puzzlestein: | |
| def __init__(self, nummer, oben, unten, links, rechts, beschädigt=False): | |
| self.nummer = nummer | |
| self.oben = oben | |
| self.unten = unten | |
| self.links = links | |
| self.rechts = rechts | |
| self.beschädigt = beschädigt | |
| def __str__(self): | |
| text ="#{} links:{} rechts:{} oben:{} unten:{}" | |
| text = text.format(self.links, self.rechts, | |
| self.oben, self.unten) | |
| # instanzen erzeugen | |
| if __name__ == "__main__": | |
| Puzzlespiel("wasserfall.jpg", 50, 20) | |
| print(Lager.meine_spiele) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # zuordnung von Puzzlesteinen zu Puzzlespielen kann auf | |
| # verschiende Arten erfolgen | |
| import random | |
| class Lager: | |
| meine_spiele = [] # class variable | |
| class Puzzlespiel: | |
| def __init__(self, bild, breite, höhe): | |
| self.bild = bild | |
| self.breite = breite | |
| self.höhe = höhe | |
| self.anzahl_steine = breite * höhe | |
| # self referenziert DIESE Instanz | |
| Lager.meine_spiele.append(self) | |
| self.steine = [] # leere Liste | |
| def erzeuge_steine(self): | |
| gegenteil = {"Zapfen":"Bucht", | |
| "Bucht":"Zapfen"} | |
| i = 0 | |
| for y in range(self.höhe): | |
| for x in range(self.breite): | |
| stein = Puzzlestein(nummer=i, | |
| beschädigt=False, | |
| unten=None, | |
| oben=None, | |
| links=None, | |
| rechts=None) | |
| # kante oben? weil erste Reihe ? | |
| if y == 0: | |
| stein.oben = "Kante" | |
| # kante unten weil unterste Reihe ? | |
| if y == self.höhe - 1 : #weil python beginnt mit 0 zu zählen | |
| stein.unten = "Kante" | |
| # kante links ? | |
| if x == 0: | |
| stein.links = "Kante" | |
| # kante rechts | |
| if x == self.breite - 1: | |
| stein.rechts = "Kante" | |
| # zufällig zapfen und buchten vergeben | |
| if stein.rechts is None: | |
| stein.rechts = random.choice(("Zapfen", "Bucht")) | |
| if stein.unten is None: | |
| stein.unten = random.choice(("Zapfen", "Bucht")) | |
| if stein.links is None: | |
| # vorgängerstein hat index [i-1] oder self.steine[-1] | |
| vorgänger = self.steine[-1] | |
| vorgänger_form = vorgänger.rechts | |
| stein.links = gegenteil[vorgänger_form] | |
| if stein.oben is None: | |
| # vorgängerstein hat index[i-self.breite] | |
| vorgänger = self.steine[i-self.breite] # nachbar oben | |
| vorgänger_form = vorgänger.unten | |
| stein.oben = gegenteil[vorgänger_form] | |
| # stein zu den anderen steinen im spiel dazutun | |
| self.steine.append(stein) | |
| i += 1 | |
| class Puzzlestein: | |
| def __init__(self, nummer, oben, unten, links, rechts, beschädigt=False): | |
| self.nummer = nummer | |
| self.oben = oben | |
| self.unten = unten | |
| self.links = links | |
| self.rechts = rechts | |
| self.beschädigt = beschädigt | |
| def __str__(self): | |
| text ="#{} links:{} rechts:{} oben:{} unten:{}" | |
| text = text.format(self.nummer, self.links, self.rechts, | |
| self.oben, self.unten) | |
| return text | |
| # instanzen erzeugen | |
| if __name__ == "__main__": | |
| p = Puzzlespiel("wasserfall.jpg", 50, 20) | |
| #print(Lager.meine_spiele) | |
| #stein = Puzzlestein(55, "Rand", "Zapfen", "Bucht", "Bucht") | |
| #print(stein) | |
| p.erzeuge_steine() | |
| #print(p.steine) | |
| for s in p.steine: | |
| print(s) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os # operation system | |
| #https://docs.python.org/3/library/os.html | |
| # os.path.join | |
| # zugriff auf datei "rex.jpg" im Ordner "Hund": | |
| # unter linux und macOS: folder/file | |
| # unter windows: folder\file | |
| # os.path.join wählt immer das richtige Verbindungszeichen | |
| dateiname = os.path.join("Hund", "rex.jpg") | |
| # os.name .. zeight betriebssystem an | |
| print("Betriebsystem:", os.name) | |
| # os.getcwd() ... zeigt current work directory | |
| print(os.getcwd()) | |
| # os.walk ... durchsucht (rekursiv!) dateien und ordner | |
| #for root, dirs, files in os.walk('.'): | |
| # #print(root, dirs, files) | |
| # print("============================") | |
| # print("derzeit:", root) | |
| # print("=============================") | |
| # print("---- (unter)verzeichnisse: ----") | |
| # for d in dirs: | |
| # print(d) | |
| # print("----- Dateien ----") | |
| # for file in files: | |
| # print(file) | |
| # input("bitte enter drücken") | |
| # pathlib | |
| import pathlib | |
| for root, dirs, files in pathlib.Path(".").walk(): | |
| print("======root ist: ===========================") | |
| print(root) | |
| print("===========================================") | |
| print("---------- folders: ---------------") | |
| for d in dirs: | |
| print(d) | |
| print("- - - - - - files - - - - - - - ") | |
| for f in files: | |
| print(f) | |
| print("-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.") | |
| input("Enter drücken") | |
| # os.call ... ruft ein anderes Programm direkt vom Betriebssystem auf (z.B. calc.exe ) | |
| # bessere Alternative subprocess | |
| import subprocess | |
| subprocess.call("pluma") # started (im Labor) den Editor pluma | |
| # sys ... System | |
| import sys #https://docs.python.org/3/library/sys.html | |
| # liste der argumente ... das erste argument ist immer der | |
| # python-filename | |
| # die elemente der Liste sind immer strings | |
| # bsp: programm starten mit python termin09_001.py abc 123 | |
| print("sys.argv ist", sys.argv) | |
| #sys.exit() # beendet ein programm sofort | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| x = "Berta Besen" | |
| x | |
| 'Berta Besen' | |
| " " in x | |
| True | |
| x.index(" ") | |
| 5 | |
| x[x.index(" ")+1:] | |
| 'Besen' | |
| name1, name2, name3 = "Alice", "Bob", "Carl" | |
| name1 = name1[0:2]+"X" + name1[3:] | |
| def delta(): | |
| return delta | |
| x = delta() | |
| x | |
| <function delta at 0x78a982db3c70> | |
| # oop, classen und vererbung | |
| class Spielzeug: | |
| def __init__(self, name): | |
| self.name = name | |
| self.farbe = "grün" | |
| class Schwimmi(Spielzeug): | |
| def schwimm(richtung): | |
| print(f"ich schwimme nach {richtung}") | |
| s1 = Spielzeug() | |
| Traceback (most recent call last): | |
| File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode | |
| exec(code, self.locals) | |
| File "<pyshell#25>", line 1, in <module> | |
| TypeError: Spielzeug.__init__() missing 1 required positional argument: 'name' | |
| s1 = Spielzeug("tsunami") | |
| s1 | |
| <__main__.Spielzeug object at 0x78a982da3cd0> | |
| s1.farbe | |
| 'grün' | |
| s2 = Schwimmi("ente") | |
| s2.farbe | |
| 'grün' | |
| s1 | |
| <__main__.Spielzeug object at 0x78a982da3cd0> | |
| type(s1) | |
| <class '__main__.Spielzeug'> | |
| s1.schwimm() | |
| Traceback (most recent call last): | |
| File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode | |
| exec(code, self.locals) | |
| File "<pyshell#33>", line 1, in <module> | |
| AttributeError: 'Spielzeug' object has no attribute 'schwimm' | |
| s2 | |
| <__main__.Schwimmi object at 0x78a982da3dc0> | |
| type(s2) | |
| <class '__main__.Schwimmi'> | |
| s2.schwimm("vorne") | |
| Traceback (most recent call last): | |
| File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode | |
| exec(code, self.locals) | |
| File "<pyshell#36>", line 1, in <module> | |
| TypeError: Schwimmi.schwimm() takes 1 positional argument but 2 were given | |
| class Schwimmi(Spielzeug): | |
| def schwimm(self, richtung): | |
| print(f"ich schwimme nach {richtung}") | |
| s2 = Schwimmi("ente") | |
| s2 | |
| <__main__.Schwimmi object at 0x78a982da3eb0> | |
| type(s2) | |
| <class '__main__.Schwimmi'> | |
| s2.schwimm("vorne") | |
| ich schwimme nach vorne | |
| s1.schwimm("vorne") | |
| Traceback (most recent call last): | |
| File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode | |
| exec(code, self.locals) | |
| File "<pyshell#43>", line 1, in <module> | |
| AttributeError: 'Spielzeug' object has no attribute 'schwimm' | |
| class Schwimmi(Spielzeug): | |
| def __init__(self, name, farbe="grün"): | |
| Spielzeug.__init__(name) | |
| self.farbe = farbe # überschreibe die Farbe vom Spielzeug | |
| def schwimm(self, richtung): | |
| print(f"ich schwimme nach {richtung}") | |
| s3 = Schwimmi("gummiente", "gelb") | |
| Traceback (most recent call last): | |
| File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode | |
| exec(code, self.locals) | |
| File "<pyshell#46>", line 1, in <module> | |
| File "<pyshell#45>", line 3, in __init__ | |
| TypeError: Spielzeug.__init__() missing 1 required positional argument: 'name' | |
| class Schwimmi(Spielzeug): | |
| def __init__(self, name, farbe="grün"): | |
| Spielzeug.__init__(self, name) | |
| self.farbe = farbe # überschreibe die Farbe vom Spielzeug | |
| def schwimm(self, richtung): | |
| print(f"ich schwimme nach {richtung}") | |
| s3 = Schwimmi("gummiente", "gelb") | |
| s3.farbe | |
| 'gelb' | |
| s3.name | |
| 'gummiente' | |
| class Flugi(Spielzeug): | |
| def __init__(self, name, farbe="rot"): | |
| Spielzeug.__init__(self, name) | |
| self.farbe = farbe | |
| def flieg(self): | |
| print("flap-flap-flap") | |
| s4 = Flugi("habicht") | |
| s4 | |
| <__main__.Flugi object at 0x78a980d4f2b0> | |
| type(s4) | |
| <class '__main__.Flugi'> | |
| s4.flieg() | |
| flap-flap-flap | |
| s4.schwimm("vorne") | |
| Traceback (most recent call last): | |
| File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode | |
| exec(code, self.locals) | |
| File "<pyshell#63>", line 1, in <module> | |
| AttributeError: 'Flugi' object has no attribute 'schwimm' | |
| >>> class Wasserflugzeug(Flugi, Schwimmi): | |
| ... def __init__(self, name, farbe="türkis") | |
| ... | |
| SyntaxError: incomplete input | |
| >>> class Wasserflugzeug(Flugi, Schwimmi): | |
| ... def __init__(self, name, farbe="türkis"): | |
| ... super().__init__(name) | |
| ... self.farbe = farbe | |
| ... | |
| ... | |
| >>> s5 = Wasserflugzeug("kingfischer") | |
| >>> s5.__dict__ | |
| {'name': 'kingfischer', 'farbe': 'türkis'} | |
| >>> s5.schwimm("schnell nach vorne") | |
| ich schwimme nach schnell nach vorne | |
| >>> s5.flieg() | |
| flap-flap-flap |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment