[Python-de] While Schleife

Georg Mischler schorsch at schorsch.com
Die Apr 26 18:00:01 CEST 2005


Dr. Werner Pessenhofer wrote:

> y = 0
> while y <= 18:
>       y = y + 2
>       x = X[:,1]
>       y1 = X[:,y]
>       plot (y1,x,'-')
>
>
> Das erste Spektrum (Spalte 1 und 2 aus dem array) wird noch geplottet,
> allerdings tritt dann folgende Fehlermeldung auf:
>
> Traceback (most recent call last):
>     File "<stdin>", line 1, in ?
>     File "/usr/tmp/python-25858Gby.py", line 11, in ?
>       y1 = X[:,y]
> IndexError: invalid index
> >>> ## working on region in file /usr/tmp/python-258584kB.py...
> Traceback (most recent call last):
>     File "<stdin>", line 1, in ?
>     File "/usr/tmp/python-258584kB.py", line 11, in ?
>       y1 = X[:,y]
> IndexError: invalid index

In deinem richtigen Code muss die Reihenfolge anders sein
als im geposteten Beispiel, sonst würde nämlich gar nichts
geplottet. Schon die Zeile  x = X[:,1]  sollte eigentlich
einen Fehler produzieren.

Nimm das Komma aus der Slice-Spezifikation raus, dann wird
es funktionieren:   x = X[:1]

Analog natürlich für alle anderen Slices. Indexwerte innerhalb
von [] dürfen nur aus Ints und : bestehen.  Wenn du das Komma bei
einer Liste oder einem String einfügst, dann kriegst du ein
"TypeError: list indices must be integers". Numerical Python
reagiert offenbar mit einem weniger aussagekräftigen IndexError.


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/