Seite 1 von 1
Einsteigerfrage
Verfasst: Sonntag 26. September 2010, 18:53
von Nordpol
Hi,
ich spiel gerade ein bißchen mit Python rum, um die Syntax zu erlernen.
warum wird in folgendem Script die continue-Anweisung immer ausgeführt?
Code: Alles auswählen
#!/usr/bin/python
zahl = 23
fertig = 0
while fertig != 1 and True:
geraten = raw_input('Geben Sie eine ganze Zahl ein: ')
if geraten == 'q':
break
elif geraten > 100:
continue
elif geraten == zahl:
print 'Gluekwunsch, Sie haben es eraten.'
print 'aber Sie gewinnen nix ;-)'
fertig = 1
elif geraten < zahl:
print 'Na, ein bisschen hoeher darf die Zahl schon sein...'
else:
print 'Neenee... viel zu hoch :-)'
print 'fertig.'
Und noch eine Frage:
Wenn ich merke, dass ich ein komplettes Script in eine Schleife welcher art auch immer setzen möchte, muss ich dann alle Zeile erneut einrücken?
In php z.B. mache ich einfach um den kompletten Teil, der in die Schleife soll, geschweifte Klammern. Geht das in Python nicht?
Grüße und schönen Sonntag, Nordpol
Re: Einsteigerfrage
Verfasst: Sonntag 26. September 2010, 19:02
von Hyperion
Nordpol hat geschrieben:
warum wird in folgendem Script die continue-Anweisung immer ausgeführt?
Lass Dir mal den Typen von geraten ausgeben!
Code: Alles auswählen
geraten = raw_input('Geben Sie eine ganze Zahl ein: ')
print type(geraten)
Nordpol hat geschrieben:
Wenn ich merke, dass ich ein komplettes Script in eine Schleife welcher art auch immer setzen möchte, muss ich dann alle Zeile erneut einrücken?
Ja, musst Du! Ein guter Editor / IDE kann das, indem Du alle Zeilen markierst und dann Tab drückst.
Re: Einsteigerfrage
Verfasst: Sonntag 26. September 2010, 19:39
von derdon
Hyperion: *Wie* ein guter Editor das kann, ist doch egal
Bei vim benutze ich z.b.
um bis zur Zeile 23 einzurücken und
die 3 folgenden Zeilen plus die aktuelle Zeile auszurücken.
Re: Einsteigerfrage
Verfasst: Sonntag 26. September 2010, 20:02
von cofi
derdon hat geschrieben:und
die 3 folgenden Zeilen plus die aktuelle Zeile auszurücken.
Du benutzt die Pfeiltasten? Packt ihn!
In Emacs nutze ich das uebrigens auch (allerdings '<3j')
@OP: Nein Python benutzt die Einrueckunge statt Klammern, aber selbst in Klammersprachen hat man meist entsprechende Einrueckungen, weil es einfach auffaelliger ist als die Klammern.
Uebrigens gibt es spezielle Python-Tags: [ python ] statt [ code ] nutzen.
Re: Einsteigerfrage
Verfasst: Sonntag 26. September 2010, 20:36
von Nordpol
Hi,
@Hyperion: Danke, dass Du mir den Befehl zur Type-Ausgabe gleich mitgeliefert hast. So weit bin ich nämlich noch nicht. Python geht anscheinend sehr viel genauer mit Datentypen um, wie z.b. php oder Perl.
Warum ist denn eigentlich ein beliebiger String immer größer als 100?
@all: Als Editor nehm ich aus Gewohnheit editplus. Und ja, der kann markierte Zeilen per tab einrücken und das Schöne ist, man kann tabs als Whitespaces einfügen.
Grüße, NP
Re: Einsteigerfrage
Verfasst: Sonntag 26. September 2010, 20:56
von Hyperion
derdon hat geschrieben:Hyperion: *Wie* ein guter Editor das kann, ist doch egal
Ooops... zu viel Info versucht in einen Satz zu packen

Re: Einsteigerfrage
Verfasst: Sonntag 26. September 2010, 21:10
von BlackJack
@Nordpol: Wenn unterschiedliche Typen nicht "wissen" wie sie verglichen werden können, dann wird auf eine nicht näher bestimmte, aber für einen Programmlauf konsistente Weise aufgrund des Typs bestimmt was grösser/kleiner ist. In diesem Fall sind also alle Zeichenketten grösser als alle ganzen Zahlen.
AFAIK wird in CPython die `id()` des Typs verwendet, was in CPython der Adresse des Typobjekts entspricht. Sind aber beides Implementierungsdetails auf die man sich nicht verlassen sollte.
Ab Python 3.x ist der Vergleich von Unterschiedlichen Typen die nicht wissen wie man sie vergleicht ein Laufzeitfehler.
Re: Einsteigerfrage
Verfasst: Montag 27. September 2010, 07:03
von /me
Nordpol hat geschrieben:In php z.B. mache ich einfach um den kompletten Teil, der in die Schleife soll, geschweifte Klammern. Geht das in Python nicht?
Code: Alles auswählen
>>> from __future__ import braces
SyntaxError: not a chance (<pyshell#22>, line 1)
Re: Einsteigerfrage
Verfasst: Montag 27. September 2010, 13:45
von birkenfeld
ist übrigens immer das gleiche wie