Seite 3 von 3
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Sonntag 17. März 2013, 16:38
von cofi
Warum kompliziert? Du hast 7 ueberfluessige und 2 tote Code Zeilen. Die 10. ruft `hack()` auf. Wenn du das nicht verstehst, gehe mal Zeile fuer Zeile durch.
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Sonntag 17. März 2013, 16:47
von Gary123456
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Sonntag 17. März 2013, 17:13
von nomnom
Du machst ja immer noch nichts mit username/password bzw. all_user/all_password! Wenn du nur ein Registrieren vortäuschen willst, kannst du ja auch einfach nur zweimal input() aufrufen.
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Sonntag 17. März 2013, 17:24
von Gary123456
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Montag 18. März 2013, 07:05
von kevind
Warum werden in den Funktionen mittels return andere Funktionen aufgerufen ?
Hier werden ja keine Rückgabewerte erwartet, sondern wie es für mich aussieht willst du nur die nächste Funktion aufrufen.
Gruss Kev
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Montag 18. März 2013, 19:42
von Gary123456
Ich habe return falsch interpretiert. Ich denke, ich les mir nochmal das ganze Kapitel durch. Später folgt neuer Code.
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Dienstag 19. März 2013, 15:23
von Gary123456
Code: Alles auswählen
import sys
import time
def phase1():
with open("info.txt", "w") as file2:
#content of the file
file2.write("Name des Opfers ")
file2.write(input("Geben Sie hier den Namen des Opfers ein!"))
file2.write("IP des Opfers ")
file2.write(input("Geben Sie hier die IP des Opfers ein!"))
file2.write("Über welchem Port: ")
file2.write(input("Geben Sie hier die Portnummer ein."))
time.sleep(5.0)
print("Verbindung aufgenommen!")
time.sleep(5.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 hack():
hack_query = input("Wollen Sie wirklich hacken? Wenn ja drücken Sie die 1.")
if hack_query == "1":
phase1()
else:
sys.exit()
def register():
username = input("Geben Sie hier Ihren gewünschten Benutzernamen ein!")
password = input("Geben Sie hier Ihr gewünschtes Passwort ein!")
hack()
def main():
register_query = input("Wenn Sie sich registrieren wollen, drücken Sie die 1.")
if register_query == "1":
register()
else:
sys.exit()
if __name__ == '__main__':
main()
Man könnte doch vor jedem sys.exit() ein return setzen, da ich ja die Funktion beenden will. Oder ist das dann wieder unnötig, ich ja das Programm beenden will?
Weitgehenst sollte der Code stimmen.
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Dienstag 19. März 2013, 15:30
von BlackJack
@Gary123456: Wenn Du *vor* irgend etwas ein ``return`` setzt, dann wird das danach nicht mehr ausgeführt weil das ``return`` die Abarbeitung der Funktion oder Methode beendet.
Soweit ich das sehe sind die `sys.exit()`-Aufrufe beide überhaupt nicht nötig.
Die Funktionen sind so aber nicht gut aufgeteilt. Man benutzt Funktionen ja um sie wiederverwenden, austauschen, und einzeln testen zu können. Wenn eine Funtkion immer die nächste aufruft, dann geht das aber nicht.
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Dienstag 19. März 2013, 15:37
von Gary123456
Man benutzt Funktionen, um
- ein größeres Programm besser einteilen zu können, das dient der Lesbarkeit des Codes
- um den Code kürzer zu machen, wenn man diesselbe Zeilen mehrmals braucht -> somit nur Aufruf einer Funktion
- den Programmablauf simpler zu gestalten
Ja, jetzt sehe ich auch dass die beiden Funktionen sys.exit unnötig sind, da das Programm sich eh automatisch schließz, wenn falsch Eingabe betätigt wird. sys.exit() verlängert nur unnötig den Code.
So sollte der Code richtig sein:
Code: Alles auswählen
import sys
import time
def phase1():
with open("info.txt", "w") as file2:
#content of the file
file2.write("Name des Opfers ")
file2.write(input("Geben Sie hier den Namen des Opfers ein!"))
file2.write("IP des Opfers ")
file2.write(input("Geben Sie hier die IP des Opfers ein!"))
file2.write("Über welchem Port: ")
file2.write(input("Geben Sie hier die Portnummer ein."))
time.sleep(5.0)
print("Verbindung aufgenommen!")
time.sleep(5.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 hack():
hack_query = input("Wollen Sie wirklich hacken? Wenn ja drücken Sie die 1.")
if hack_query == "1":
phase1()
def register():
username = input("Geben Sie hier Ihren gewünschten Benutzernamen ein!")
password = input("Geben Sie hier Ihr gewünschtes Passwort ein!")
hack()
def main():
register_query = input("Wenn Sie sich registrieren wollen, drücken Sie die 1.")
if register_query == "1":
register()
if __name__ == '__main__':
main()
Man könnte das Programm natürlich auch funktionslos schreiben, dennoch, finde ich, trägt das nicht der Lesbarkeit bei. Oder stimmt das nicht, was ich hier behaupte?
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Dienstag 19. März 2013, 15:44
von BlackJack
@Gary123456: Das stimmt schon, aber *die* Aufteilung beziehungsweise dieses von einer Funktion immer zu nächsten springen ist nicht gut. Ich sage ja nicht das man es ohne Funktionen schreiben sollte, nur dass man es nicht *so* mit Funktionen schreiben sollte. Eine Funktion sollte in der Regel genau *eine* in sich abgeschlossene Sache machen. Die `register()`-Funktion sollte nur das Registrieren machen, und nicht auch noch das Hacken. Die `hack()`-Funktion ist im Grunde nichts für sich abgeschlossenes, das hätte man auch mit in `main()` oder in `phase1()` schreiben können.
Re: Spiel: Kleines FakeHackprogramm Frage
Verfasst: Dienstag 19. März 2013, 15:52
von Gary123456
OK verstehe. Werde mal schaun, wies im Prog weitergeht.
