OOP Übungen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
JonnyDamnnox
User
Beiträge: 68
Registriert: Sonntag 10. März 2013, 21:14

Ja ich wusste auch nie was ich programmieren soll. Ich hab immer gedacht WOAH GEIL jetzt programmier ich irgendwas noch nie da gewesenes und werde fantastillionär!!!!11elf1 :D Dann drei Tage brainstormming und nur Mist kam dabei raus :K
Jetzt Programmier ich einfach alle Programme die ich täglich so benutze, dann erfinde ich zwar das Rad immer wieder neu, aber seine eigenen Programme(wie grauenvoll sie auch sein mögen) zu benutzern, ist schon was feines :) :

Webbrowser(mit Pyside, darauf freu ich mich am meisten), email Programm, Texteditor, Musik/Videoplayer, FTP Server, Graphikprogramm usw. oder auch Sachen fürs Handy mit Android ect.(gibts auch in Python)

Gruß
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Ich habe noch eine bessere Idee: Mit Hilfe des OS Moduls verschiedene Informationen aus dem System liefern und das in ein Textdokument abspeichern. :mrgreen:
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Das wäre ja schon ein kleiner Erfolg:

Code: Alles auswählen

import os

for i in os.listdir("C:\\"):
    print "C:\\" + i
for i in os.listdir("C:\\Users"):
    print "C:\\Users\\" + i
for i in os.listdir("C:\\Windows"):
    print "C:\\Windows\\" + i 
Jemand schon vom Tool OTL gehört? Jetzt müsste ich nur noch Erstellungsdatum der Files ermitteln (Reicht da das time-Modul?), verschiedene Registrypunkte abchecken und es möglich machen, Dateien zu löschen. Kleiner Code, aber viel Wirkung. Begeisterung.
Zuletzt geändert von Gary123456 am Samstag 20. April 2013, 13:10, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Abgesehen davon, dass das hier nix mit OOP zu tun hat:

- Verwende RawStrings bei Pfadangaben:

Code: Alles auswählen

r"C:\foo"
- der Name ``i`` ist kein guter Bezeichner! Wieso nicht ``file_name`` oder ``entry``?

- Der ganze Code ist Copy & Paste! Der schreit geradezu danach, durch eine Funktion allgemeiner zu werden:

Code: Alles auswählen

print "C:\\"
for i in os.listdir("C:\\"):
    print i
print
#--- Ende Block 1
print "C:\\Users"
for i in os.listdir("C:\\Users"):
    print i
print
#--- Ende Block 2
print "C:\\Windows"
for i in os.listdir("C:\\Windows"):
    print i 
# Ende Block 3
Schau Dir mal die Blöcke an und überlege, worin sie sich unterscheiden! Dann entwirf eine Funktion, die diese Funktionalität kapselt und rufe diese entsprechend mit den richtigen Parametern drei mal auf.

Danach können wir das dann noch weiter refactorn, indem das dreimalige Aufrufen der Funktion im Code vermieden wird und die Parameter in eine passende Datenstruktur ausgelagert werden.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Ach komm, das habe ich in 2 Minuten gebastelt. Ist doch nicht ernst zu nehmen. :) Ich habe den Code editiert und noch kürzer gemacht. Zwar unübersichtlich, ist aber noch lang kein Programm. Das sollte eher ein Mini Demonstrationstools sein, was ich basteln werde. :) Ich hoffe, Du verstehst mich.

Aber dennoch:
- Verwende RawStrings bei Pfadangaben:
Davon habe ich noch nie gehört. Ich werde danach mal googlen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Gary123456 hat geschrieben:Ach komm, das habe ich in 2 Minuten gebastelt. Ist doch nicht ernst zu nehmen. :)
Doch! Denn *Übung* macht den Meister. Und wenn man bei kleinen Schnipseln "schlampt", dann schleicht sich das auch in längeren Code ein. Man eignet sich also sogar schlechtes oder gar falsches an.
Gary123456 hat geschrieben: Ich habe den Code editiert und noch kürzer gemacht. Zwar unübersichtlich, ist aber noch lang kein Programm.
Nun ist es fast noch schlimmer, da Du Pfade nicht mittels ``os.path.join`` zusammen fügst!

Damit Du mal siehst, wie ich es meinte (ungetestet):

Code: Alles auswählen

import os
import os.path

def show_directory(path):
    for entry in os.listdir(path):
        print os.path.join(path, entry)

for path in (r"C:", r"C:\Users", r"C:\Windows"):
    show_directory(path)
Und nun vergleiche das mal mit Deinem Code...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Nun ist es fast noch schlimmer, da Du Pfade nicht mittels ``os.path.join`` zusammen fügst!
Habe davon noch nix gehört. Dennoch Danke!

Dein Code ging nich. Habe den etwas umgeformt, dass er funkt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich schrieb ja auch ungestet ;-) Habe ihn korrigiert.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten