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

Code: Alles auswählen

<3↓
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

Code: Alles auswählen

<3↓
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') :twisted:

@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 :-D

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

Code: Alles auswählen

if a and True:
ist übrigens immer das gleiche wie

Code: Alles auswählen

if a: