Seite 1 von 1

unverständliche Fehlermeldung

Verfasst: Freitag 24. November 2023, 17:32
von hubgra
Beim Aufruf der Funktion kommt die Fehlermeldung
File "C:\Users\huber\py\geom.py", line 61, in koeff
a = (B[1]-A[1])/(B[0]-A[0])
TypeError: 'module' object is not subscriptable

Wo ist hier ein Modul im Spiel?

Code: Alles auswählen

#liefert Koeff. [a,b] von y = a*x+b für Gerade durch A,B
def koeff(A,B):
    a = (B[1]-A[1])/(B[0]-A[0])
    b = A[1] - a*A[0]
    return [a,b]

Re: unverständliche Fehlermeldung

Verfasst: Freitag 24. November 2023, 17:48
von narpfel
„subscript“ == Indexoperator, also die eckigen Klammern. Also ist mindestens eins der Objekte, auf die du in der Zeile den Indexoperator anwendest, ein Modul.

Re: unverständliche Fehlermeldung

Verfasst: Freitag 24. November 2023, 18:05
von hubgra
Was ein Index ist, weiß ich, aber ich verwende doch keinen Einzelbuchstaben als Modulbezeichner.
Ich habe den Aufruf mal ganz solo probiert, da war alles ok.
Die Fehlermeldung muß wohl von "weiter oben" kommen, es sind ja mehrere Module im Spiel.

Re: unverständliche Fehlermeldung

Verfasst: Freitag 24. November 2023, 18:27
von narpfel
Die Fehlermeldung sagt, dass mindestens eins der Objekte ein Modul ist. Also musst du überprüfen, welche der Namen an der Stelle an Module gebunden sind. Und im nächsten Schritt dann, wo die Module herkommen. Die Funktion wird ja irgendwie aufgerufen. Wo genau, sollte eigentlich im Traceback stehen.

Re: unverständliche Fehlermeldung

Verfasst: Freitag 24. November 2023, 18:45
von noisefloor
Hallo,

du musst halt da ansetzen, wo A und B definiert bzw. instanziert werden. Oder hier mal den vollen Stack Trace posten, vielleicht sieht man da schon was.

Gruß, noisefloor

Re: unverständliche Fehlermeldung

Verfasst: Freitag 24. November 2023, 20:20
von sparrow
hubgra hat geschrieben: Freitag 24. November 2023, 18:05aber ich verwende doch keinen Einzelbuchstaben als Modulbezeichner.
Nein? Du verwendest furchtbar schlechte Namen. Nämlich, wie du selbst feststellst, Einzelbuchstaben. Und die auch noch großgeschrieben. Oder klein? Der Sinn erschließt sich kaum. Unter den Bedingungen ist es ja duchaus vorstellbar, dass du ein Modul als Parmeter an die Funktion übergeben hast.