Spiel: Kleines FakeHackprogramm Frage
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- User
- Beiträge: 318
- Registriert: Dienstag 26. Februar 2013, 18:39
-
- User
- Beiträge: 318
- Registriert: Dienstag 26. Februar 2013, 18:39
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
Code: Alles auswählen
if register_query == "1":
return register()
Gruss Kev
-
- User
- Beiträge: 318
- Registriert: Dienstag 26. Februar 2013, 18:39
Ich habe return falsch interpretiert. Ich denke, ich les mir nochmal das ganze Kapitel durch. Später folgt neuer Code.
-
- User
- Beiträge: 318
- Registriert: Dienstag 26. Februar 2013, 18:39
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()
Weitgehenst sollte der Code stimmen.
@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.
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.
-
- User
- Beiträge: 318
- Registriert: Dienstag 26. Februar 2013, 18:39
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:
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?
- 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()
@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.
-
- User
- Beiträge: 318
- Registriert: Dienstag 26. Februar 2013, 18:39
OK verstehe. Werde mal schaun, wies im Prog weitergeht.