Last active
November 10, 2025 12:23
-
-
Save horstjens/947188ab48389cecb719fe10c4b8c69c to your computer and use it in GitHub Desktop.
Revisions
-
horstjens revised this gist
Nov 10, 2025 . 1 changed file with 149 additions and 0 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,149 @@ 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 -
horstjens revised this gist
Nov 8, 2025 . 1 changed file with 94 additions and 0 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,94 @@ # 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) -
horstjens revised this gist
Nov 8, 2025 . 1 changed file with 58 additions and 0 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,58 @@ # 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) -
horstjens revised this gist
Nov 8, 2025 . 1 changed file with 8 additions and 6 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -20,12 +20,14 @@ def __init__(self, bild, breite, höhe): 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 -
horstjens revised this gist
Nov 8, 2025 . 1 changed file with 37 additions and 0 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,37 @@ # 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, 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 if __name__ == "__main__": Puzzlespiel("wasserfall.jpg", 50, 20) print(Lager.meine_spiele) -
horstjens revised this gist
Nov 8, 2025 . 1 changed file with 52 additions and 0 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,52 @@ # 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__) -
horstjens revised this gist
Nov 8, 2025 . 1 changed file with 71 additions and 1 deletion.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -1 +1,71 @@ 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 -
horstjens created this gist
Nov 8, 2025 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1 @@ # Uebungen zu os, sys, pathlib