Seite 1 von 1

if else

Verfasst: Samstag 8. April 2006, 22:22
von lukasmarti
bei mir funktioniert das if und else nie kann mir jemand sagen was ich falsch mache.

>>> if x>5:
print "ok"
else:

IndentationError: unindent does not match any outer indentation level (<pyshell#2>, line 3)
>>>

DANKE SCHON MAL[/code]

Verfasst: Samstag 8. April 2006, 22:35
von Korsakov
hab zwar nicht viel ahnung von python (noch), aber ich denke der fehler ist der: nach dem "else:" einfach ne code anweisung! z.b:

Code: Alles auswählen

if bla < blub:
  print 'blub blub'
else:
  break

Verfasst: Samstag 8. April 2006, 22:39
von Leonidas
Hast du mal überlegt, was du da in den Händen hältst? Das ist Python, eine der Sprachen in deren Charakterisierung fast immer steht dass sie auf Einrückung bestehen (siehe Strukturierung durch Einrücken in der Wikipedia).

Code: Alles auswählen

In [11]: if x > 5:
   ....:     print 'ok'
   ....: else:
   ....:     print 'nicht ok'
Sorry, wenn ich böse klinge, aber man sollte sich doch zumindest ein wenig mit der Sprache beschäftigen, das spart viel Fragerei.

Verfasst: Sonntag 9. April 2006, 08:01
von lukasmarti
danke für die antworten aber rükt python die zeilen selber ein???????
es funktioniert immer noch nicht

Verfasst: Sonntag 9. April 2006, 08:18
von Korsakov
ne, die einrückung musst du selber machen, sobald die nicht stimmt: error

lies dir mal lieber einn gutes tutorial durch, empfehlen kann ich dir "A Byte of Python" (deutsche übersetzung): http://abop-german.berlios.de/read/index.html

Verfasst: Sonntag 9. April 2006, 08:18
von lukasmarti
und was bedeutet in[11]

Verfasst: Sonntag 9. April 2006, 08:19
von mitsuhiko
lukasmarti hat geschrieben:und was bedeutet in[11]
Das ist der Prompt von IPython, einer interaktiven Python Konsole.

Verfasst: Sonntag 9. April 2006, 08:38
von henning
An diesem Beispiel sieht man auch gut, das man die Fehlermeldungen des Python-Interpreters ruhig mal näher anschauen kann, ab und zu gibt einem das nämlich tatsächlich die Richtung an, in der der Fehler zu suchen ist ;-)

Verfasst: Sonntag 9. April 2006, 08:41
von helmut
Hallo,

ehe es zu weiteren Missverstaendnissen kommt, kommt hier der "nackte" Code:

Code: Alles auswählen

if x>5:
    print "OK"
else:
    print "nicht OK"
Gruss, Helmut

Verfasst: Sonntag 9. April 2006, 11:57
von Leonidas
lukasmarti hat geschrieben:rükt python die zeilen selber ein???????
Nein, woher soll Python denn wissen, wann er einrücken muss und wann nicht? IPython kann neben einer Menge anderer Sachen auch Halbautomatisch einrücken.

Verfasst: Sonntag 9. April 2006, 14:27
von Mr_Snede
Vielleicht hilft ein kleines Video zur Benutzung der Pythonshell weiter:
--> http://showmedo.com/videoPage?name=Test ... nMSWindows

Leonidas benutze in seinem vorigem Post mit der "[11]"(wie er schon erwähnte) eine erweiterte Pythonshell Namens Ipython.
auch dazu gibt es Videos:
--> http://showmedo.com/videoListPage?listK ... hon_JerolH

Eine Übersicht über weitere (Python)Videos gibt es hier:
--> http://showmedo.com/videoListPage?listK ... PythonList

@Leonidas
Nein, woher soll Python denn wissen
Vielleicht am Doppelpunkt am Ende einer Zeile wie jeder Editor mit Pythonsupport auch?
Die IDLE Shell rückt automatisch ein.

cu Sebastian

Verfasst: Sonntag 9. April 2006, 14:33
von Leonidas
Mr_Snede hat geschrieben:Vielleicht am Doppelpunkt am Ende einer Zeile wie jeder Editor mit Pythonsupport auch?
Die IDLE Shell rückt automatisch ein.
Ein-Rücken schon, aber Aus-rücken geht nicht.

Ich finde ja SciTEs verhalten bei sowas lustig:

Code: Alles auswählen

blah = blahbla[1:]
dann versucht er die nächste Zeile einzurücken.

Verfasst: Sonntag 9. April 2006, 15:03
von Mr_Snede
jupp über dieses Verhalten von Scite bin ich auch schon gestolpert.
Aber bisher überwiegen die Fälle in denen Scite richtig einrückt somit stört mich das nicht.

Hmm wäre das nicht ein super Patent?
Automatisches Deindent, wenn der Verfasser es will?
Das Schlimme ist, es gibt bestimmt jemand, der das schon angemeldet hat. :shock:

cu Sebastian

Verfasst: Sonntag 9. April 2006, 15:31
von birkenfeld
Mr_Snede hat geschrieben: Hmm wäre das nicht ein super Patent?
Automatisches Deindent, wenn der Verfasser es will?
Das Schlimme ist, es gibt bestimmt jemand, der das schon angemeldet hat.
Python wird bald den Operator "is not" aus der Sprache schmeißen müssen, der ist nämlich von Microsoft patentiert.

Verfasst: Montag 10. April 2006, 07:57
von BlackJack
birkenfeld hat geschrieben:Python wird bald den Operator "is not" aus der Sprache schmeißen müssen, der ist nämlich von Microsoft patentiert.
Nur wenn der Operator ``IsNot`` geschrieben würde und Python eine von BASIC abgeleitete Sprache wäre.

Ansonsten würde das Patent auch den ``!=`` Operator in Java betreffen, der genau das gleiche tut.

Verfasst: Montag 10. April 2006, 08:04
von modelnine
Nur wenn der Operator ``IsNot`` geschrieben würde und Python eine von BASIC abgeleitete Sprache wäre.
Nichtsdestotrotz ist dieses eines dieser "Trivialpatente," für die man eigentlich keinen Patentschutz erteilen dürfte, weil die Idee hinter einer logischen Veneinung in Verbindung mit einer Identitätsprüfung sicherlich nichts neues ist, und sich trivialerweise aus der Verknüpfung zweier bereits existierender Operatoren ergibt. Dass so ein Patent trotzdem verteilt wird und vor Gericht bestand hat stellt aus meiner Sicht erstens ein Armutszeugnis für das Allgemeinwissen der netten Nachbarn überm großen Teich aus, und zum anderen auch ein Armutszeugnis für eine Firma wie Microsoft. Aber, letztere sind mit solchen Patenten ja nicht die einzigen, gibt genügend Firmen (wie zum Beispiel auch SAP) die genügend Geld mit solchen Trivialpatenten machen wollen, aber es zumindest in Europa noch nicht können.

Gut, dass zumindest das EU-Parlament genügend Einsicht gezeigt hat und die letzte Patentnovelle gekippt hat. Mal schauen wie lange diese Haltung noch anhält, und das große Geld genügend Entscheidungsträger eingekauft hat, so dass das Gesetz in neuer Lesung passieren kann. Bis dahin bin ich aus Europa hoffentlich ausgewandert, in eine bessere Welt. Humm... Vielleicht sollte ich mir das noch mal überlegen; die WTO ist überall.