Neuling hat eine Frage

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
S100O
User
Beiträge: 11
Registriert: Dienstag 15. Mai 2012, 14:00

Hallo Leute ich beschäftige mich seit ein paar Tagen mit Python um mir gefallt es sehr gut.

Nun sitz ich an einem für euch "kleinen" Problem, das ich aber noch nicht lösen kann. Ich hab auch schon gegoogelt aber noch keine richtige Lösung gefunden.
Und zwar wenn ich eine if Bedingung erfüllte wird diese auch ausgeführt, zusätzlich aber auch die else.

http://pastebin.com/FJfJkVZE


Danke für die Hilfe

Gruß

S100O
Zuletzt geändert von S100O am Dienstag 15. Mai 2012, 14:09, insgesamt 1-mal geändert.
deets

Das halte ich fuer unmoeglich. Also zeig uns bittet deinen Code, und vergiss nicht, ihn in python-tags zu setzen, damit man ihn erkennen kann - besonders die einrueckung.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Willkommen zu Python und im Forum!

Zu deinem Problem: Die mittleren `if` sollten `elif` heissen, momentan gehoert das `else` nur zur letzten `if` Anweisung, ist das Wort also nicht "!beenden" wird sie immer ausgefuehrt.

Fuer die Zukunft im Forum: Bitte verwende

Code: Alles auswählen

 [/python ] Tags, ohne ist Python Code schlicht nicht lesbar.

Zum Code:
`while 1` -> `while True` (es gibt extra Boolesche Konstanten, nutze sie)
`if (...)` -> `if ...` (Klammern sind unnoetig)

Und dieses `while 0:` fuehrt zu einem SyntaxError ...
Zuletzt geändert von cofi am Dienstag 15. Mai 2012, 14:11, insgesamt 1-mal geändert.
S100O
User
Beiträge: 11
Registriert: Dienstag 15. Mai 2012, 14:00

Hab jetzt einen link eingefügt :)
S100O
User
Beiträge: 11
Registriert: Dienstag 15. Mai 2012, 14:00

[quote="cofi"]Willkommen zu Python und im Forum!

Zu deinem Problem: Die mittleren `if` sollten `elif` heissen, momentan gehoert das `else` nur zur letzten `if` Anweisung, ist das Wort also nicht "!beenden" wird sie immer ausgefuehrt.

Fuer die Zukunft im Forum: Bitte verwende

Code: Alles auswählen

 [/python ] Tags, ohne ist Python Code schlicht nicht lesbar.

Zum Code:
`while 1` -> `while True` (es gibt extra Boolesche Konstanten, nutze sie)
`if (...)` -> `if ...` (Klammern sind unnoetig)

Und dieses `while 0:` fuehrt zu einem SyntaxError ...[/quote]


Okay danke jetzt funktioniert es. Warum muss ist elif heißen nach dem ersten if? Warum kann es nicht weiterhin if bleiben?
Benutzeravatar
snafu
User
Beiträge: 6902
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ergänzend zu cofi: In der jetzigen Form hast du 2 voneinander unabhängige `if`-Statements gefolgt von einem `if`-`else`-Statement. Dadurch wird der `else`-Zweig jedes Mal ausgeführt, wenn der User nicht den Beenden-Befehl eingegeben hat, weil der Interpreter halt nur auf das letzte `if` guckt. Das entspricht sicherlich nicht dem, was du wolltest. Wie schon gesagt, musst du die Prüfungen in die Form `if`-`elif`-`elif`-`else` umwandeln, damit Python das als einen zusammengehörigen Block ansieht.
Zuletzt geändert von snafu am Dienstag 15. Mai 2012, 14:20, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Code: Alles auswählen

if foo:
    pass
elif bar:
    pass
else:
    pass
ist aequivalent zu

Code: Alles auswählen

if foo:
    pass
else:
    if bar:
        pass
    else:
        pass
was offensichtlich nicht aequivalent zu deinem Code ist ;)

Der Grund ist ganz einfach: Weil die Python-Grammatik deinen Code als 3 eigenstaendige if Anweisungen sieht, wovon nur die letzte einen `else` Zweig hat. Mit `elif` hast du hingegen eine Kurzform von einem `else ... if` mit dem du immernoch in der 1. if Anweisung bist.
S100O
User
Beiträge: 11
Registriert: Dienstag 15. Mai 2012, 14:00

Okay ich würde das ganze gerne auch grafisch darstellen. Hab bis jetzt nur mit TextEdit geschrieben. Habe mir gerade Python Lauscher Version 3.2.3 runtergeladen. Ich muss sagen ich komm im TextEdit besser klar. Bloß brauch ich doch so wie ich das gelesen habe das für eine grafische Darstellung oder? Ich hab schon einige Tutorial Seiten gelesen wo immer mit Tkinter importiert wurde. Aber irgendwie haut das auch nicht hin wenn ich den Code 1:1 kopiere und dann ausführe kommt kein Fenster mit "Hallo Welt" sondern ne Meldung das der Syntax falsch ist.
Ich benutze einen Mac 10.7.4

Welche Grafikmodule sind für Mac geeignet etc?
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Als Texteditor nimmst du was dir am ehesten zusagt. Für Macs wären SublimeText, TextMate, TextWrangler (oder BBEdit für die volle Version) Varianten mit wesentlich mehr Funktionalität. Bei TextEdit musst du aufpassen, dass er dir nicht zum Beispiel die Anführungszeichen verändert, da es an sich eher ein minimaler Wortprozessor statt einem Editor ist.

Mit Grafikmodulen wirst du sicher GUI-Toolkits meinen. Tkinter wäre die einfachste Variante reinzukommen, allerdings musst du auf Macs darauf achten, dass es korrekt installiert wurde (ich musste es nämlich noch gemäß der offiziellen Seite von ActiveState holen). Alternativ gibt es noch all die anderen Toolkits im entsprechendem Forenbereich, von denen wohl QT am professionellsten unter OS X aussehen wird. So oder so wird es aber viel Einarbeitung erfordern GUIs bauen zu können, von daher bist du besser dran lieber erst Objektorientierung zu erlernen und alle Grundlagen sicher zu beherrschen bevor du es damit versuchst.

Achja, die Fehler werden wohl genau daran liegen, dass du einfach nur alles herüberkopiert hast. Ein erster Ansatz wäre es mal Python- und Tkinter-Version deines Beispiels mit deiner Konfiguration zu vergleichen. Python 3.x ist ja leider nicht zu Python 2.x abwärtskompatibel.

Ich frage mich immer noch was dieser Lauscher sein mag von dem du da gesprochen hast :(
Antworten