Spiel: Kleines FakeHackprogramm Frage

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.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Werde ich machen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Noch ein kleiner Tipp: Für so langen Code verwende doch gist.github.org o.ä. Bei Github kannst Du sogar Änderungen am Code hinter demselben Link erstellen. Alternativ haben wir hier im Forum selber ein Pastebin (s.o. in der Menüleiste der Seite).
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

Mit Pastebin habe ich es grade versucht. Komme damit nicht klar. Da werden iwie noch extra Einrückungen gemacht, die ich nicht will.

Daher nochmals hier der Code:

Code: Alles auswählen

# A little game
import sys
import signal
import time 


def phase1():


    print("Verbindung wird aufgenommen!")

    time.sleep(10.0)
    print("Verbindung aufgenommen!")
    print("Es werden Dateien gestohlen! Haben Sie etwas Geduld!")

    time.sleep(10.0)
    print("Daten erfolgreich gestohlen")

    datei = open("Daten.txt", "w")

    datei.write("Ebay - Passwort: Hekdlaien33 ")
    datei.write("FB - Passwort: ji87z78zhihg76 ")
    datei.write("READY")

    datei.close()

    print("Das Spiel ist jetzt beendet")
    sys.exit()
     

def hilfe():
     
    print("Mit Hilfe dieses Programm werden sie hacken! INFO: Das ist ein Spiel und kein echtes Hackprogramm!")


def hacken():
     

    print("Hier werden zuerst Infos über den Angreifer erfasst und diese in ein sogenanntes Logfile eingetragen!")

    opfer_Name = input("Geben Sie hier den Namen des Opfers ein! (Vor- und Nachname!)")
    opfer_IP = input("Geben Sie hier die IP des Opfers ein!")
    angreifer_Port = input("Geben Sie hier die Portnummer ein, über die Sie hacken möchten!")
    
    datei2 = open("Logfile.txt", "w")
    #content of the file
    datei2.write("Name des Opfers ")
    datei2.write(opfer_Name)
    datei2.write("IP des Opfers ")
    datei2.write(opfer_IP)
    datei2.write("Über welchem Port: ")
    datei2.write(angreifer_Port)

    datei2.close()
    
    oa_abfrage = input("Wollen sie wirklich hacken? 1 für ja!")

    if oa_abfrage == "1":       

        print("Der Computer wird jetzt gehackt. Gedulden Sie sich bitte etwas!")
        phase1()

    else:

        print("Sie haben nichts eingegeben!")
          
              

    

def starte_spiel():
    hilfe_abfrage = input("Falls Sie Hilfe brauchen, drücken Sie die 1.")


    if hilfe_abfrage == "1":
         hilfe()

    else:
            

        spiel_abfrage = input("Wollen Sie wirklich hacken? Falls ja, drücken sie 1.")

        if spiel_abfrage == "1":
            hacken()

        elif spiel_abfrage == None:
            print("Das Spiel wird jetzt beendet")
            sys.exit()

        

registrieren = input("Falls Sie sich registrieren möchten, drücken sie 1.")

    

alle_benutzer = []
alle_passwort = []


if registrieren == "1":
         
    neuer_benutzer = input("Geben Sie den gewünschten Benutzernamen ein:")
    neues_passwort = input("Geben Sie das gewünschte Passwort ein:")
    alle_benutzer.append(neuer_benutzer)
    alle_passwort.append(neues_passwort)

elif registrieren == None:
     
    benutzer = input("Geben Sie Ihren Benutzernamen ein:")
    passwort = input("Geben Sie Ihr Passwort ein:")


try:

    if alle_benutzer[0] == neuer_benutzer and alle_passwort[0] == neues_passwort:
        starte_spiel()

except:

    print("User nicht registriert oder anderer Fehler!")
    sys.exit()



Ist es von der Lesbarkeit besser? Habe mich, denke ich, an alle PEP8 Richtlinien gehalten.

Und ich möchte nochmals with ansprechen. Habe hier was gefunden: http://openbook.galileocomputing.de/pyt ... 13_008.htm Kapiere das nur nicht. Kann mir jemand das in kurzen Sätzen erklären?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du solltest mit vier Spaces einrücken - dann gibt es auch keine Probleme in Pastebins ;-)

In Deinem Code sind noch viel zu viele Leerzeichen enthalten.

Vom Galileo-Openbook wird hier im Forum abgeraten. Mindestens das Kapitel über OOP ist Schrott.

Was genau kapierst Du denn an ``with`` nicht?
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

In Deinem Code sind noch viel zu viele Leerzeichen enthalten.

Leerzeichen? Meinst Du Leerzeilen oder wirklich Leerzeichen? :lol:
Was genau kapierst Du denn an ``with`` nicht?
Praktisch das ganze. Ich weiß einfach nicht, wie man sowas bildet.
Du solltest mit vier Spaces einrücken - dann gibt es auch keine Probleme in Pastebins ;-)
Bei mir sind Standard 4 Leerzeichen.

Ich habe den Code umgeformt, ist jetzt etwas kürzer:

Code: Alles auswählen

# A little game
import sys
import signal
import time 


def phase1():
    print("Verbindung wird aufgenommen!")
    time.sleep(10.0)
    print("Verbindung aufgenommen!")
    print("Es werden Dateien gestohlen! Haben Sie etwas Geduld!")
    time.sleep(10.0)
    print("Daten erfolgreich gestohlen")
    datei = open("Daten.txt", "w")
    datei.write("Ebay - Passwort: Hekdlaien33 ")
    datei.write("FB - Passwort: ji87z78zhihg76 ")
    datei.write("READY")
    datei.close()
    print("Das Spiel ist jetzt beendet")
    sys.exit()


def hilfe():     
    print("Mit Hilfe dieses Programm werden sie hacken! INFO: Das ist ein Spiel und kein echtes Hackprogramm!")


def hacken():
    print("Hier werden zuerst Infos über den Angreifer erfasst und diese in ein sogenanntes Logfile eingetragen!")
    opfer_Name = input("Geben Sie hier den Namen des Opfers ein! (Vor- und Nachname!)")
    opfer_IP = input("Geben Sie hier die IP des Opfers ein!")
    angreifer_Port = input("Geben Sie hier die Portnummer ein, über die Sie hacken möchten!")
    datei2 = open("Logfile.txt", "w")
    #content of the file
    datei2.write("Name des Opfers ")
    datei2.write(opfer_Name)
    datei2.write("IP des Opfers ")
    datei2.write(opfer_IP)
    datei2.write("Über welchem Port: ")
    datei2.write(angreifer_Port)
    datei2.close()  
    oa_abfrage = input("Wollen sie wirklich hacken? 1 für ja!")
    if oa_abfrage == "1":       
        print("Der Computer wird jetzt gehackt. Gedulden Sie sich bitte etwas!")
        phase1()
    else:
        print("Sie haben nichts eingegeben!")             

def starte_spiel():
    hilfe_abfrage = input("Falls Sie Hilfe brauchen, drücken Sie die 1.")
    if hilfe_abfrage == "1":
         hilfe()
    else:           
        spiel_abfrage = input("Wollen Sie wirklich hacken? Falls ja, drücken sie 1.")
        if spiel_abfrage == "1":
            hacken()
        elif spiel_abfrage == None:
            print("Das Spiel wird jetzt beendet")
            sys.exit()


registrieren = input("Falls Sie sich registrieren möchten, drücken sie 1.")
alle_benutzer = []
alle_passwort = []


if registrieren == "1":         
    neuer_benutzer = input("Geben Sie den gewünschten Benutzernamen ein:")
    neues_passwort = input("Geben Sie das gewünschte Passwort ein:")
    alle_benutzer.append(neuer_benutzer)
    alle_passwort.append(neues_passwort)
elif registrieren == None:     
    benutzer = input("Geben Sie Ihren Benutzernamen ein:")
    passwort = input("Geben Sie Ihr Passwort ein:")


try:
    if alle_benutzer[0] == neuer_benutzer and alle_passwort[0] == neues_passwort:
        starte_spiel()
except:
    print("User nicht registriert oder anderer Fehler!")
    sys.exit()
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Jupp, meinte Leerzeilen ;-)

Naja, wenn Du ``with`` nicht kapierst, dann hast Du einfach noch keine Situationen erlebt, bei denen es helfen könnte :-D Anders formuliert: Willst Du selber ein Objekt bauen, welches das Context Manager Verhalten implementiert, oder willst Du es selber in einer bestimmten Situation nutzen?

Für ersteres solltest Du zweiteres verstanden haben; und zweiteres ergibt sich doch aus der jeweiligen Situation!?! Wenn Du eine solche nicht hast, dann bringt es ja nichts, krampfhaft dieses anwenden zu wollen...

Das klassische Beispiel ist eben das Öffnen von Datei-Objekten... das wird ja sogar im OpenBook gezeigt - auch wenn Du DIr lieber eine andere Quelle suchen solltest.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das with-statement ist eigentlich überhaupt nicht schwer zu verstehen, insbesonderts nicht im Umgang mit Dateien...

Ein sehr konkretes Beispiel, was du quasi 1:1 in deinen Code übernehmen kannst: http://preshing.com/20110920/the-python ... by-example

Der schwerwiegende Vorteil des with-Statements ist, dass das, was man geöffnet hat (z.B. eine Datei) automatisch wieder geschlossen wird.

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

Ui OK habs verstanden, denke ich. Danke an euch.

So wäre es also korrekt:

Code: Alles auswählen

# A little game
import sys
import signal
import time 


def phase1():
    print("Verbindung wird aufgenommen!")
    time.sleep(10.0)
    print("Verbindung aufgenommen!")
    print("Es werden Dateien gestohlen! Haben Sie etwas Geduld!")
    time.sleep(10.0)
    print("Daten erfolgreich gestohlen")
    with open("Daten.txt", "w") as datei: 
        datei.write("Ebay - Passwort: Hekdlaien33 ")
        datei.write("FB - Passwort: ji87z78zhihg76 ")
        datei.write("READY")
    print("Das Spiel ist jetzt beendet")
    sys.exit()


def hilfe():     
    print("Mit Hilfe dieses Programm werden sie hacken! INFO: Das ist ein Spiel und kein echtes Hackprogramm!")


def hacken():
    print("Hier werden zuerst Infos über den Angreifer erfasst und diese in ein sogenanntes Logfile eingetragen!")
    opfer_Name = input("Geben Sie hier den Namen des Opfers ein! (Vor- und Nachname!)")
    opfer_IP = input("Geben Sie hier die IP des Opfers ein!")
    angreifer_Port = input("Geben Sie hier die Portnummer ein, über die Sie hacken möchten!")
    with open("info.txt", "w") as datei2:
        #content of the file
        datei2.write("Name des Opfers ")
        datei2.write(opfer_Name)
        datei2.write("IP des Opfers ")
        datei2.write(opfer_IP)
        datei2.write("Über welchem Port: ")
        datei2.write(angreifer_Port) 
    oa_abfrage = input("Wollen sie wirklich hacken? 1 für ja!")
    if oa_abfrage == "1":       
        print("Der Computer wird jetzt gehackt. Gedulden Sie sich bitte etwas!")
        phase1()
    else:
        print("Sie haben nichts eingegeben!")             

def starte_spiel():
    hilfe_abfrage = input("Falls Sie Hilfe brauchen, drücken Sie die 1.")
    if hilfe_abfrage == "1":
         hilfe()
    else:           
        spiel_abfrage = input("Wollen Sie wirklich hacken? Falls ja, drücken sie 1.")
        if spiel_abfrage == "1":
            hacken()
        elif spiel_abfrage == None:
            print("Das Spiel wird jetzt beendet")
            sys.exit()


registrieren = input("Falls Sie sich registrieren möchten, drücken sie 1.")
alle_benutzer = []
alle_passwort = []


if registrieren == "1":         
    neuer_benutzer = input("Geben Sie den gewünschten Benutzernamen ein:")
    neues_passwort = input("Geben Sie das gewünschte Passwort ein:")
    alle_benutzer.append(neuer_benutzer)
    alle_passwort.append(neues_passwort)
elif registrieren == None:     
    benutzer = input("Geben Sie Ihren Benutzernamen ein:")
    passwort = input("Geben Sie Ihr Passwort ein:")


try:
    if alle_benutzer[0] == neuer_benutzer and alle_passwort[0] == neues_passwort:
        starte_spiel()
except:
    print("User nicht registriert oder anderer Fehler!")
    sys.exit()
Vom lesen her leichter? Alle PEP8 Richtlinien eingehalten? Gibt es was zu beanstanden?
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Deine Zeilen sind noch zu lang. Außerdem "sollen" (SHOULD) alle Bezeichner möglichst Englisch sein (hilfe -> help, hacken -> hack, ...) (und SHOULD heißt, dass du es wirklich tun solltest :-P).

Und es wäre schöner, wenn du alles nach deinen Funktionsdefinitionen in eine Funktion main() packen könntest, die du dann mit

Code: Alles auswählen

if __name__ == '__main__':
    main()
startest.

Dein try-except-Block am Ende ist noch zu weit gefasst. Solltest du mal ein Fehler in deinen Code einbauen, wird dir in Zukunft nur angezeigt werden: Ein Fehler ist aufgetreten, statt einer richtigen Fehlermeldung. Außerdem ist das sys.exit() am Ende unnötig.

Außerdem sollten Funktionen möglichst keine Nebeneffekte haben. Das Beenden des Programms ist aber so ein Nebeneffekt. Schöner wäre es, wenn du die Funktion einfach mit "return" beenden würdest. So kannst du zum Beispiel auch nach dem Spiel noch irgendwas anderes drucken oder so.

Und ich verstehe auch nicht, was der "elif registrieren == None"-Block soll. ;) registrieren kann doch gar nicht None sein.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Hi,
Dein try-except-Block am Ende ist noch zu weit gefasst. Solltest du mal ein Fehler in deinen Code einbauen, wird dir in Zukunft nur angezeigt werden: Ein Fehler ist aufgetreten, statt einer richtigen Fehlermeldung. Außerdem ist das sys.exit() am Ende unnötig.
Den try-Block habe ich jetzt mal ganz rausgenommen.
Deine Zeilen sind noch zu lang. Außerdem "sollen" (SHOULD) alle Bezeichner möglichst Englisch sein (hilfe -> help, hacken -> hack, ...) (und SHOULD heißt, dass du es wirklich tun solltest :-P).
Gemacht. 8)
Und es wäre schöner, wenn du alles nach deinen Funktionsdefinitionen in eine Funktion main() packen könntest, die du dann mit
Noch nie davon gehört. Was macht diese main?
Außerdem sollten Funktionen möglichst keine Nebeneffekte haben. Das Beenden des Programms ist aber so ein Nebeneffekt. Schöner wäre es, wenn du die Funktion einfach mit "return" beenden würdest. So kannst du zum Beispiel auch nach dem Spiel noch irgendwas anderes drucken oder so.
Habe das jetzt auch besser gelöst!

Neuer Code:

Code: Alles auswählen


# A little game
import sys
import signal
import time 


def phase1():
    print("Verbindung wird aufgenommen!")
    time.sleep(10.0)
    print("Verbindung aufgenommen!")
    print("Es werden Dateien gestohlen! Haben Sie etwas Geduld!")
    time.sleep(10.0)
    print("Daten erfolgreich gestohlen")
    with open("Daten.txt", "w") as file: 
        file.write("Ebay - Passwort: Hekdlaien33 ")
        file.write("FB - Passwort: ji87z78zhihg76 ")
        file.write("READY")
    print("Das Spiel ist jetzt beendet")
    


def help_game():     
    print("Mit Hilfe dieses Programm werden sie hacken!")


def hack():
    print("Logfileerstellung")
    victim_name = input("Geben Sie hier den Namen des Opfers ein!")
    victim_ip = input("Geben Sie hier die IP des Opfers ein!")
    attacker_port = input("Geben Sie hier die Portnummer ein.")
    with open("info.txt", "w") as file2:
        #content of the file
        file2.write("Name des Opfers ")
        file2.write(victim_name)
        file2.write("IP des Opfers ")
        file2.write(victim_ip)
        file2.write("Über welchem Port: ")
        file2.write(attacker_port) 
    oa_query = input("Wollen sie wirklich hacken? 1 für ja!")
    if oa_query == "1":       
        print("Der Computer wird jetzt gehackt.")
        return phase1()
    else:
        print("Sie haben nichts eingegeben!")
        sys.exit()

def start_game():
    help_query = input("Falls Sie Hilfe brauchen, drücken Sie die 1.")
    if help_query == "1":
         help_game()
    else:           
        game_query = input("Wollen Sie wirklich hacken? Falls ja, drücken sie 1.")
        if game_query == "1":
           return hack()
        else:
            sys.exit()
    

register = input("Falls Sie sich registrieren möchten, drücken sie 1.")
all_user = []
all_password = []


if register == "1":         
    new_user = input("Geben Sie den gewünschten Benutzernamen ein:")
    new_password = input("Geben Sie das gewünschte Passwort ein:")
    all_user.append(new_user)
    all_password.append(new_password)
else:
    sys.exit()


if all_user[0] == new_user and all_password[0] == new_password:
    start_game()


BlackJack

@Gary123456: Die `main()`-Funktion macht das was Du da rein schreibst. Und das sollte halt der Code auf Modulebene sein der keine Konstanten oder Klassen/Funktionen definiert. Dann kann man das Modul importieren ohne dass das Programm abläuft, um zum Beispiel einzelne Funktionen isoliert testen zu können, und Unittests schreiben zu können, und einzelne Funktionen wiederverwenden zu können, …
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Hi,

Ich werde das nicht einbauen, da ich keinen blassen Schimmer habe, wofür das da ist und wofür das nützlich sein soll. Entschuldige.

Aber sonst ist am Code nichts zu beanstanden. Ich werde bezüglich dieser MAIN Funktion noch etwas googlen und in meinem Buch nachschauen. Vll finde ich was nützliches.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Gary123456 hat geschrieben: Ich werde das nicht einbauen,
Solltest Du aber besser ;-)
Gary123456 hat geschrieben: da ich keinen blassen Schimmer habe, wofür das da ist und wofür das nützlich sein soll. Entschuldige.
BlackJack hat Dir doch zig Gründe *für* den Einsatz davon genannt...

Sich schlau zu machen ist zwar gut, manchmal muss man als Anfänger aber auch Dinge einfach akzeptieren. Man kann nicht immer alles sofort verstehen und verinnerlichen.
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

Code: Alles auswählen

# A little game
import sys
import signal
import time 

def phase1():
    print("Verbindung wird aufgenommen!")
    time.sleep(10.0)
    print("Verbindung aufgenommen!")
    print("Es werden Dateien gestohlen! Haben Sie etwas Geduld!")
    time.sleep(10.0)
    print("Daten erfolgreich gestohlen")
    with open("Daten.txt", "w") as file: 
        file.write("Ebay - Passwort: Hekdlaien33 ")
        file.write("FB - Passwort: ji87z78zhihg76 ")
        file.write("READY")
    print("Das Spiel ist jetzt beendet")

def help_game():     
    print("Mit Hilfe dieses Programm werden sie hacken!")

def hack():
    print("Logfileerstellung")
    victim_name = input("Geben Sie hier den Namen des Opfers ein!")
    victim_ip = input("Geben Sie hier die IP des Opfers ein!")
    attacker_port = input("Geben Sie hier die Portnummer ein.")
    with open("info.txt", "w") as file2:
        #content of the file
        file2.write("Name des Opfers ")
        file2.write(victim_name)
        file2.write("IP des Opfers ")
        file2.write(victim_ip)
        file2.write("Über welchem Port: ")
        file2.write(attacker_port) 
    oa_query = input("Wollen sie wirklich hacken? 1 für ja!")
    if oa_query == "1":       
        print("Der Computer wird jetzt gehackt.")
        return phase1()
    else:
        print("Sie haben nichts eingegeben!")
        sys.exit()

def start_game():
    help_query = input("Falls Sie Hilfe brauchen, drücken Sie die 1.")
    if help_query == "1":
         help_game()
    else:           
        game_query = input("Wollen Sie wirklich hacken? Falls ja, drücken sie 1.")
        if game_query == "1":
           return hack()
        else:
            sys.exit()
    
def main():
   
    register = input("Falls Sie sich registrieren möchten, drücken sie 1.")
    all_user = []
    all_password = []

    if register == "1":         
        new_user = input("Geben Sie den gewünschten Benutzernamen ein:")
        new_password = input("Geben Sie das gewünschte Passwort ein:")
        all_user.append(new_user)
        all_password.append(new_password)
    else:
        sys.exit()

    if all_user[0] == new_user and all_password[0] == new_password:
        start_game()

if __name__ == '__main__':
    main()
Ich hoffe, das ist so richtig. Funktionieren tut es jedenfalls.

Sonst noch was auszusetzen? :)
Zuletzt geändert von Gary123456 am Sonntag 17. März 2013, 14:10, insgesamt 1-mal geändert.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Ziemlich viele Leerzeilen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Gary123456 hat geschrieben: Sonst noch was auszusetzen? :)
Ja, der Thread hier wird durch die ellenlangen Code-Passagen stark unterbrochen. Wie ich Dir schon empfahl, solltest Du das besser in Pastebins auslagern (in Zukunft). Speziell bei gist.github.com hättest Du jetzt für jedes Update einfach dein Gist überarbeiten können.

Inhaltlich habe ich mir das noch nicht angeguckt...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ok, also generell vermischst Du viel zu sehr Logik mit Darstellung bzw. Benutzerinteraktion. Wieso muss das Speichern von Werten direkt in derselben Funktion stehen, wie die Eingabe durch den Benutzer?

Vieles lässt sich auch besser kapseln, etwa die immer ähnlichen Menü-Fragmente. Mal willst Du nur Ja oder Nein, mal 1 oder 2 usw. Das kann man sicherlich besser generalisieren.
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

Ziemlich viele Leerzeilen.
Habe es jetzt editiert.
Ja, der Thread hier wird durch die ellenlangen Code-Passagen stark unterbrochen. Wie ich Dir schon empfahl, solltest Du das besser in Pastebins auslagern (in Zukunft). Speziell bei gist.github.com hättest Du jetzt für jedes Update einfach dein Gist überarbeiten können.
Werde mir das jetzt mal anschauen. Ich denke, dass das letzte Mal wegen des neuen Editors was schiefgelaufen ist. Werde das jetzt berücksichtigen.
Ok, also generell vermischst Du viel zu sehr Logik mit Darstellung bzw. Benutzerinteraktion. Wieso muss das Speichern von Werten direkt in derselben Funktion stehen, wie die Eingabe durch den Benutzer?
Warum nicht? Ist es besser/übersichtlicher, wenn man für jede Aktion eine eigene Funktion aufbaut? Dann wären das aber recht viele Funktionen.
Vieles lässt sich auch besser kapseln, etwa die immer ähnlichen Menü-Fragmente. Mal willst Du nur Ja oder Nein, mal 1 oder 2 usw. Das kann man sicherlich besser generalisieren.
Werde versuchen, da eine bessere Lösung zu finden.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

für text-basierte Interaktion (also mehr als 1 oder 2 Eingaben) finde ich ja das cmd-Modul aus der Standardbibliothek sehr praktisch...

Gruß, noisefloor
BlackJack

Würde sich hier IMHO auch ganz gut eignen weil man sich da auch so einen schönen Retro-mässigen Prompt für die Eingaben mit basteln kann.
Antworten