Beispiel:
Code: Alles auswählen
s="abcdef"
first=s[0]
second=s[1]
Code: Alles auswählen
s="abcdef"
first=s[0]
second=s[1]
Ja ja, natürlich. Ich hab's auch eben ausprobiert. Eigentlich ist der Hintergrund ein anderer und ich wollte jetzt nicht das ganze Programm posten. Es gibt einen Fehler in einem Python Programm:__blackjack__ hat geschrieben: Samstag 14. Februar 2026, 11:35 @Krischu: Was ist denn das für eine Frage? Das kann man doch einfach ausprobieren wenn man aus irgendeinem Grund nicht in der Python-Dokumentation nachlesen kann.
Code: Alles auswählen
if cresttol[1] == "G": fd = (15 + 11 * pitch) / 1000 #esg = – (15 + 11 P)
10:28:09 ~~~~~~~~^^^
10:28:09 IndexError: string index out of rangeCode: Alles auswählen
cresttol = "A"
cresttol[1]Laut Anwendung sollte das so sein. Die Toleranzklassen, um die es hier geht, sind Buchstaben/Zahlenpaare. 2G z.B.Sirius3 hat geschrieben: Samstag 14. Februar 2026, 11:54 Der Fehler tritt auf, weil der String zu kurz ist, also kein Index 1 existiert.Warum glaubst du, dass der String mindestens zwei Zeichen hat?Code: Alles auswählen
cresttol = "A" cresttol[1]
Klaro!Kann man auf eine String-Variable indiziert zugreifen?
Code: Alles auswählen
s="abcdef"
for i in range(len(s)):
print(f'i = {i}, s[{i}] = {s[i]}')
i = 0, s[0] = a
i = 1, s[1] = b
i = 2, s[2] = c
i = 3, s[3] = d
i = 4, s[4] = e
i = 5, s[5] = f
Code: Alles auswählen
print(s[6])Komputer sagt: "Nein"Traceback (most recent call last):
File "/usr/lib/python3.12/idlelib/run.py", line 580, in runcode
exec(code, self.locals)
File "<pyshell#4>", line 1, in <module>
IndexError: string index out of range
Es gibt da verschiedene Ansätze, je nachdem was man abdecken will:Krischu hat geschrieben: Samstag 14. Februar 2026, 12:29 Die Toleranzklassen, um die es hier geht, sind Buchstaben/Zahlenpaare. 2G z.B.
Code: Alles auswählen
# Exakt 2 Zeichen
digit, character = tolerance
if character == "G":
# ...
# Beliebige Länge, beachtet nicht was vor dem "G" steht
if tolerance.endswith("G"):
# ...
# Vergleicht das letzte Zeichen, String muss mind. 1 Zeichen haben
if tolerance[-1] == "G":
# ...Oder es ist - aus welchen Gründen auch immer - der leere String. Vielleicht ja aus einer externen Quelle, von der nichts (mehr) gelesen werden kann und wo der leere String das Ende darstellt. Dies würde natürlich zu der Frage führen, woher der Inhalt von ``cresttol`` kommt...noisefloor hat geschrieben: Samstag 14. Februar 2026, 13:27 Weil das halt `cresttol` nur 1-elementig ist, also nur `cresttol[0]` einen Wert zurückliefert.