Fehlermeldung - Ubuntu

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

Hallo,

Frage 1: Macht es Unterschiede, wenn man auf Ubuntu programmiert? Ich meine vom Syntax her?

Frage2:

Code: Alles auswählen



password = 098765
versuche = 3

password_query = int(input("Geben Sie nun ihr Passwort ein! (Nur Zahlen erlaubt!"))

while True:
    if password_query == password:
        print("Berechtigt!")
    elif password_query != password:
        print("Nicht berechtigt! Veruchen sie es noch einmal!")
        password_query
        versuche -= 1
    if versuche == 0:
        print("Konto gesperrt!")

Fehlermeldung: Invalid token. Was bedeutet dieser Fehler?
Die Lösung hätte ich schon zu diesem Problem. Würde mich aber interessieren, was die Fehlermeldung bedeutet.
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Bitte gebe immer den kompletten Traceback an:

Code: Alles auswählen

  File "test.py", line 1
    password = 098765
                    ^
SyntaxError: invalid token
Das Problem ist die null vor der Zahl. Damit sagst du python das er die Zahl zur Basis 8 (Oktett) behandeln soll und eine 9 ergibt da keinen Sinn, deswegen die Fehlermeldung "invalid token". Sprich, mach die 0 weg und es sollte funktionieren.

Sowas kann man übrigens wunderbar in ipython oder dem interaktiven Interpreter überprüfen:

Code: Alles auswählen

In [1]: 015155
Out[1]: 6765

In [2]: 0915155
  File "<ipython-input-2-f09f7b5c8786>", line 1
    0915155
          ^
SyntaxError: invalid token
Bei der ersten Zeile sollte es dich doch schon wundern, dass 015155 = 6765 ein bisschen komisch aussieht :)

Edit: Willst du Passwörter vergleichen, die eine Null beinhalten, dann benutze einfach Strings und keine Integer.

Grüße,
anogayales
Zuletzt geändert von anogayales am Mittwoch 20. März 2013, 15:18, insgesamt 2-mal geändert.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

1.: Den entscheidenden Unterschied macht aus was für ein Python du verwendest. Davon abgesehen gibt es einige systemspezifische Sachen, die du anscheinend nie angerührt hast.
2.: Siehe vorige Antwort.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Hauptsystem bleibt Windows.

OK habe verstanden.

===Thema gelöst===
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Ach Lösung vergessen:

Code: Alles auswählen

password = "098765"
versuche = 3

while versuche >=  0:

    password_query=input("Geben Sie Ihr Passwort ein!")

    if password_query == password:
        print("Richtig")
        break
    
    else:
        print("Nicht berechtigt!",versuche,"Versuche")
        versuche -= 1
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Warum verwendest nicht gleich eine For-Schleife?
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

In dem Zusammenhang vielleicht mal die `reversed()`-Funktion anschauen. Das find ich einfacher als über die passenden Argumente bei `range()` nachdenken zu müssen. :-)
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Ich hätte das so gemacht:

Code: Alles auswählen

def password(phrase, attempts):
    for attempt in range(1, attempts+1):
        query = input('Passwort (Eingabe {0}/{1}): '.format(attempt, attempts))
        if query == phrase:
            return True

Code: Alles auswählen

>>> print('Richtig!' if password('098765', 3) else 'Falsch!')
Passwort (Eingabe 1/3): 1234
Passwort (Eingabe 2/3): 4321
Passwort (Eingabe 3/3): 2143
Falsch!
>>> print('Richtig!' if password('098765', 3) else 'Falsch!')
Passwort (Eingabe 1/3): 98765
Passwort (Eingabe 2/3): 098765
Richtig!
>>> 
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
BlackJack

@mutetella: Ich würde da am Ende explizit `False` zurückgeben statt mich auf das implizite `None` zu verlassen.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

So hätte man es natürlich auch lösen können ;)
Antworten