Programm beenden
-
- User
- Beiträge: 62
- Registriert: Donnerstag 17. November 2005, 16:25
Hi!
Ich habe in mein Programm ein paar if und else Befehle hineingeschrieben.
Nun würde ich gerne als else Befehl programmieren, dass das Programm
direkt zum Ende springt und nicht erst die dazwischen folgenden Teile
abspielt. Wie lautet der Befehl?
Danke schonmal!
Ich habe in mein Programm ein paar if und else Befehle hineingeschrieben.
Nun würde ich gerne als else Befehl programmieren, dass das Programm
direkt zum Ende springt und nicht erst die dazwischen folgenden Teile
abspielt. Wie lautet der Befehl?
Danke schonmal!
Oder auch
Code: Alles auswählen
raise SystemExit,"Ihr seid doof! Mit euch spiele ich nicht mehr!"
Egal welchen der beiden Befehle ich eingebe es funktioniert nicht!
Das Programm zeigt mir folgende Fehlermeldung:
Woran liegt das?
Hier ist ein Auschnitt meines Programms:
Edit (Leonidas): Code in Python-Tags gesetzt.
Das Programm zeigt mir folgende Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Mein Benutzername\Eigene Dateien\Python Programme\Programmname", line 46, in -toplevel-
l = Anmelden()
File "C:\Dokumente und Einstellungen\Mein Benutzername\Eigene Dateien\Python Programme\Programmname", line 44, in __init__
raise SystemExit
SystemExit
Hier ist ein Auschnitt meines Programms:
Code: Alles auswählen
# Anmelden
class Anmelden:
def login():
print "Geben sie ihren Benutzernamen ein!"
print
userscan="Testnutzer"
user=raw_input()
print
if user == userscan:
print "Geben sie nun ihr Passwort ein!"
passwortscan="Test"
print
passwort=raw_input()
print
if passwort == passwortscan:
print "Herzlich Wilkommen!"
else:
print "Passwort falsch!"
print "Sie sind nicht berechtigt dieses Programm zu benutzen!"
raise SystemExit,"Das Programm wird jetzt beendet!"
else:
print "Unbekannter Benutzer! Sie sind nicht berechtigt dieses"
print "Programm zu benutzen!"
raise SystemExit,"Das Programm wird jetzt beendet!"
l = Anmelden()
-
- User
- Beiträge: 62
- Registriert: Donnerstag 17. November 2005, 16:25
Sorry!
Der letzte Beitrag war von mir!
Hab mich ausgeloggt und vergessen mich wieder einzuloggen!
Der letzte Beitrag war von mir!
Hab mich ausgeloggt und vergessen mich wieder einzuloggen!
Poste das Ding nochmal mit Python-Tags. Ohne Einrückungen ist das nicht zu analysieren.
BTW: Für deinen Fall wäre ein sys.Exit(1) oder so doch besser geeignet. SystemExit gibt nämlich immer 0 an die Shell zurück, IIRC. Aber der Fehler liegt woanders.
Edit2: Welche Pythonversion ist das denn? Es scheint so, als ob der raise SystemExit genau das mach, was er soll, nämlich die SystemExit Exception auszulösen. Nur diese führt nicht zum sofortigen Abbruch sondern zu einem Traceback.
Ersetze es mal durch sys.exit(1) (das import sys nicht vergessen)
Ach übrigens: es muss def login(self): heißen!
BTW: Für deinen Fall wäre ein sys.Exit(1) oder so doch besser geeignet. SystemExit gibt nämlich immer 0 an die Shell zurück, IIRC. Aber der Fehler liegt woanders.
Edit2: Welche Pythonversion ist das denn? Es scheint so, als ob der raise SystemExit genau das mach, was er soll, nämlich die SystemExit Exception auszulösen. Nur diese führt nicht zum sofortigen Abbruch sondern zu einem Traceback.
Ersetze es mal durch sys.exit(1) (das import sys nicht vergessen)
Ach übrigens: es muss def login(self): heißen!
-
- User
- Beiträge: 62
- Registriert: Donnerstag 17. November 2005, 16:25
Hier ist ein Auschnitt meines Programms:
Python-Code:
Nach dieser Änderung überspringt er diesen Teil ganz!
Meine Pythonversion ist 2.4.2!
Edit (Leonidas): Code in Python-Tags gesetzt.
Python-Code:
Code: Alles auswählen
# Anmelden
class Anmelden:
def login():
print "Geben sie ihren Benutzernamen ein!"
print
userscan="Testnutzer"
user=raw_input()
print
if user == userscan:
print "Geben sie nun ihr Passwort ein!"
passwortscan="Test"
print
passwort=raw_input()
print
if passwort== passwortscan:
print "Herzlich Wilkommen!"
else:
print "Passwort falsch!"
else:
print "Unbekannter Benutzer! Sie sind nicht berechtigt dieses"
print "Programm zu benutzen!"
import sys
sys.Exit(1)
l = Anmelden()
Meine Pythonversion ist 2.4.2!
Edit (Leonidas): Code in Python-Tags gesetzt.
-
- User
- Beiträge: 62
- Registriert: Donnerstag 17. November 2005, 16:25
Hab das Programm nochmal ein bisschen geändert:
Jetzt wird folgende Fehlermeldung angezeigt:
Edit (Leonidas): Code in Python-Tags gesetzt.
Code: Alles auswählen
# Anmelden
class Anmelden:
def __init__(self):
print "Geben sie ihren Benutzernamen ein!"
print
userscan="Testnutzer"
user=raw_input()
print
if user == userscan:
print "Geben sie nun ihr Passwort ein!"
passwortscan="Test"
print
passwort=raw_input()
print
if passwort== passwortscan:
print "Herzlich Wilkommen!"
else:
print "Passwort falsch!"
else:
print "Unbekannter Benutzer! Sie sind nicht berechtigt dieses"
print "Programm zu benutzen!"
import sys
sys.Exit(1)
l = Anmelden()
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Mein Benutzername\Eigene Dateien\Python Programme\Programmname", line 47, in -toplevel-
l = Anmelden()
File "C:\Dokumente und Einstellungen\Mein Benutzername\Eigene Dateien\Python Programme\Programmname", line 45, in __init__
sys.Exit(1)
AttributeError: 'module' object has no attribute 'Exit'
Dann musst du irgendwie den raise-Befehl falsch geschrieben haben...
Und dieser Teil wird übersprungen, weil du die Loginmethode ja gar nicht aufrufst.
Zuerst musst du aber entweder schreiben: "def login(self)" oder login in eine classmethod umwandeln, mach einfach ersteres
und denn mitaufrufen.
Und dieser Teil wird übersprungen, weil du die Loginmethode ja gar nicht aufrufst.
Zuerst musst du aber entweder schreiben: "def login(self)" oder login in eine classmethod umwandeln, mach einfach ersteres
und denn mit
Code: Alles auswählen
l.login()
-
- User
- Beiträge: 62
- Registriert: Donnerstag 17. November 2005, 16:25
Ich hab die Login Funktion einfach rausgenommen! Jetzt sieht mein Programm so aus:
Aber jetzt wird dieser Fehler angezeigt:
Edit (Leonidas): Code in Python-Tags gesetzt.
Code: Alles auswählen
# Anmeldung
print "Geben sie ihren Benutzernamen ein!"
print
userscan="Testnutzer"
user=raw_input()
print
if user == userscan:
print "Geben sie nun ihr Passwort ein!"
passwortscan="Test"
print
passwort=raw_input()
print
if passwort== passwortscan:
print "Herzlich Wilkommen!"
else:
print "Passwort falsch!"
else:
print "Unbekannter Benutzer! Sie sind nicht berechtigt dieses"
print "Programm zu benutzen!"
import sys
sys.Exit(1)
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Mein Benutzername\Eigene Dateien\Python Programme\Programmname", line 43, in -toplevel-
sys.Exit(1)
AttributeError: 'module' object has no attribute 'Exit'
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Was spricht denn dagegen, die Funktion exit() richtig, das heißt klein zu schreiben?Anfänger1911 hat geschrieben:Aber jetzt wird dieser Fehler angezeigt: [...]
Hier eine etwas korrigierte Version deines Programms:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: latin-1 -*-
import sys
# Anmeldung
print "Geben sie ihren Benutzernamen ein!"
print
userscan = "Testnutzer"
user = raw_input()
print
if user == userscan:
print "Geben sie nun ihr Passwort ein!"
passwortscan = "Test"
print
passwort = raw_input()
print
if passwort== passwortscan:
print "Herzlich Wilkommen!"
else:
print "Passwort falsch!"
else:
print "Unbekannter Benutzer! Sie sind nicht berechtigt dieses"
print "Programm zu benutzen!"
sys.exit(1)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Noch eine technische Amerkung zu Logins: Üblicherweise liefert man bei einem Fehlschlag nicht die Information ob es an einem nicht existierenden Benutzernamen oder am Passwort lag. So macht man es Angreifern leichter die erstmal verschiedene Benutzernamen ausprobieren. Wenn sie einen Benutzer gefunden haben, dann wissen sie das sie für den jetzt Passworte ausprobieren können.
-
- User
- Beiträge: 62
- Registriert: Donnerstag 17. November 2005, 16:25
Ich habe die Änderungen durchgführt trotzdem erscheint noch folgender Fehler:
Mein Programm sieht mittlerweile so aus:
Edit (Leonidas): Code in Python-Tags gesetzt.
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Mein Benutzername\Eigene Dateien\Python Programme\Programmname", line 46, in -toplevel-
sys.exit(1)
SystemExit: 1
Code: Alles auswählen
# -*- coding: latin-1 -*-
import sys
# Anmelden
print "Geben sie ihren Benutzernamen ein!"
print
userscan = "Testnutzer"
user = raw_input()
print
if user == userscan:
print "Geben sie nun ihr Passwort ein!"
passwortscan = "Test"
print
passwort = raw_input()
print
if passwort == passwortscan:
print "Herzlich Wilkommen!"
else:
print "Passwort falsch!"
else:
print "Unbekannter Benutzer! Sie sind nicht berechtigt dieses"
print "Programm zu benutzen!"
sys.exit(1)
-
- User
- Beiträge: 62
- Registriert: Donnerstag 17. November 2005, 16:25
Bei sys.exit(0) tritt der gleiche Fehler auf!
Ich starte das Programm über Python IDLE, Run->Run Module!
Ich starte das Programm über Python IDLE, Run->Run Module!
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ja ja, die dolle IDLE Daran wird es wohl liegen Es ist wohl kein richtiger Fehler, sondern wohl ehr ein Hinweis... Aber ich hab keine Erfahrung mit der IDLE...
Schau mal in die FAQ: Welche Editoren werden für Python empfohlen?
EDIT: Ach das hatten wir doch letztens erst
Schau mal in die FAQ: Welche Editoren werden für Python empfohlen?
EDIT: Ach das hatten wir doch letztens erst
Dann hatte das raise SystemExit auch funktioniert.Anfänger1911 hat geschrieben:Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Mein Benutzername\Eigene Dateien\Python Programme\Programmname", line 46, in -toplevel-
sys.exit(1)
SystemExit: 1
Dein Programm kann ja schlecht auch gleich mit IDLE beenden (welches ja schließlich auch unter demselben Python-Interpreter läuft). Starte das Programm doch einfach direkt.