Seite 1 von 1

Variable wird nicht erkannt

Verfasst: Sonntag 30. September 2007, 10:25
von Imperator
Hallo,

mein Problem sieht folgendermaßen aus:

Code: Alles auswählen

liste = eingabe.split('+')
text = ''
Anzahl = len(liste)
Nummer = 0
for i in range(Anzahl):
    text  = text + liste[Nummer]
    Nummer = Nummer + 1
So erhalte ich folgende fehlermeldung: 'IndexError: list index out of range'
Schreibe ich aber statt Anzahl eine 0 hinein, was ja der Wert von Anzahl ist hinein, so klappt es wunderbar. Darf man in so einer Situation keine Variablen verwenden?

Re: Variable wird nicht erkannt

Verfasst: Sonntag 30. September 2007, 10:50
von EyDu
Also bei mir funktioniert es ohne Probleme. Du solltest aber nicht über Indizes über eine Liste laufen (und schon gar nicht über den Umweg von "Nummer"), sondern direkt über dessen Elemente:

Code: Alles auswählen

liste = eingabe.split('+')
text = ''
for elem in liste:
    text  = text + elem
Das Entfernen aller "+" in einem String geht aber auch einfacher:

Code: Alles auswählen

text = eingabe.remove("+", "")

Verfasst: Sonntag 30. September 2007, 10:57
von BlackJack
@Imperator: Mal davon abgesehen dass das sehr Umständlich ist und `eingabe` nirgends definiert ist, dürfte es hier keinen `IndexError` geben.

Bitte poste lauffähige Beispiele die das Problem, das Du im Originalquelltext hast auch haben. Man kann schlecht ein Problem in Quelltext finden den man nicht kennt.

Und rein vom Effekt her, mal angenommen `eingabe` ist an eine Zeichenkette gebunden, kann man das alles durch dieses hier ersetzen:

Code: Alles auswählen

liste = eingabe.split('+')
text = ''.join(liste)
Sollte die `liste` nicht benötigt werden reicht sogar:

Code: Alles auswählen

text = eingabe.replace('+', '')

Verfasst: Sonntag 30. September 2007, 11:25
von Imperator
@EyDu: Es geht nicht darum die +se zu entfernen.
@BlackJack: Ich habs jetzt durch Zufall gelöst. Der Fehler lag gar nicht in der Variable Nummer wie ich dachte, sondern in Anzahl. Im originalcode hatte ich nach einer radikalen umstrukturierung vergessen, die Formel zur Errechnung von Anzahl auch umzustellen. Als ich euch nun hier den Code postete, machte ich es aber automatisch richtig. Jetzt wollte ich euch den original Code posten, und dabei viel mir dieser Fehler auf. Ich löste ihn, und lies es einfach mal laufen. Ihr hättet mein gesicht sehen sollen ...

Verfasst: Montag 1. Oktober 2007, 07:07
von lutz.horn
Du solltest aber trotzdem Deinen Code auf das Python-Idiom

Code: Alles auswählen

"".join(eingabe.split("+"))
umstellen. Iteration mit Indexzugriff auf ein Array und Stringerzeugung mit "+" sind nicht Python-like.

Re: Variable wird nicht erkannt

Verfasst: Montag 1. Oktober 2007, 13:44
von birkenfeld
EyDu hat geschrieben: Das Entfernen aller "+" in einem String geht aber auch einfacher:

Code: Alles auswählen

text = eingabe.remove("+", "")
Du meinstest wohl `.replace()`?