Syntax Error in einem kleinen Programm (Zahlenraten)

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
terminal
User
Beiträge: 2
Registriert: Sonntag 11. August 2013, 17:55

Hallo,
Ich bin gerade dabei, Python zu lernen und eins meiner ersten Programme ist ein Spiel, bei dem man eine vorgegebene Zahl erraten muss.
Jedoch stoße ich immer wieder auf einen Syntax Error, den ich mir nicht erklären kann, denn die Syntax stimmt meiner Meinung nach.

Hier das Programm:

Code: Alles auswählen

secret = 1234
eingabe = 0
i = 0

print("Sie müssen die Zahl erraten. Durch die Eingabe einer 0 beenden Sie das Spiel, Die eingegebene Zahl darf nicht negativ sein.")
while eingabe != secret:
   eingabe = int(input("Bitte geben Sie eine Zahl ein: ")
   if eingabe < 0:
      print("Nur positive Zahlen!")
      continue
   elif eingabe == 0:
      print("Wird beendet.")
      break
   elif eingabe < secret and eingabe > 0:
      print("Zu klein!")
   elif eingabe > secret:
      print("Zu groß!")
   elif eingabe == secret:
      print("Geschafft!")

   i = i+1

print("Sie haben es in", i, "Versuchen geschafft!")
Nun zeigt er mir einen Syntax Error bei "if eingabe < 0:" an, jedoch bin ich mir ziemlich sicher, dass eine if-Anweisung genau so geschrieben wird, auch in meinem Python Lehrbuch stehen if-Anweisungen so drin.
Weiß jemand was ich falsch gemacht habe?
Zuletzt geändert von Anonymous am Sonntag 11. August 2013, 18:21, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Guck mal eine Zeile darüber: Bei `eingabe = int(input("Bitte geben Sie eine Zahl ein: ")` fehlt die zweite schließende Klammer. Das ist eine Sache, die man sich auf jeden Fall angewöhnen sollte, dass man wie gesagt auch die Zeile über der angezeigten überprüft. Aus technischen Gründen ist die Markierung bei solchen Fehlern nicht immer an der richtigen Stelle.

Oder sagen wir mal so: Streng genommen ist die Anzeige gar nicht fehlerhaft. Sie entspricht aber nicht immer dem, was wir als Menschen erwarten.
BlackJack

@terminal: Die Teilbedingung ``eingabe > 0`` beim zweiten ``elif`` ist überflüssig, denn es ist schon durch die beiden vorhergehenden Bedingungen beim ``if`` und beim ersten ``elif`` sichergestellt, dass diese Teilbedingung *immer* unwahr ist.
terminal
User
Beiträge: 2
Registriert: Sonntag 11. August 2013, 17:55

Ah Danke, endlich funktioniert es. Ich habe jetzt seit 2 Stunden die if-Abfrage hin- und herverändert und nie ging es. Vielleicht sollte ich doch die Syntax-Highlighting Funktion meines Texteditors verwenden, da hätte ich es gesehen.
Danke für die Hilfe und für den Tipp, auch in der Zeile darüber nachzuschauen.

@BlackJack, Ah ja, ich dachte nur dass wenn ich nur "if eingabe < secret" lasse, dass es dann auch bei negativen zahlen ausgeführt wird, was ich ja nicht möchte. Beim genauerem Überlegen ist aber klar dass es nicht so ist.
Auch ein Danke an dich.
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@terminal: Syntax-Highlighting ist generell eine sehr gute Idee beim Programmieren. Wobei dir das im konkreten Fall mit der fehlenden Klammer möglicherweise auch nicht weitergeholfen hätte. Aber wie gesagt: Einschalten ist auf jeden Fall nicht verkehrt.
Antworten