'str' - Objekt hat kein Attribut 'len'
Ive bekam eine Methode, die für die Arbeit durch die überprüfung der ersten drei Buchstaben/zahlen und sicherstellen, dass Sie identisch sind, bevor es weiter geht wie bei so
def combineProcess(request):
carID1 = request.POST['carID1']
carID2 = request.POST['carID2']
for x in range (0,3):
a += carID1.length(x)
b += carID2.length(x)
if a.equals(b):
//do something
bevor Sie es verwenden, um Arbeit, die Sie jetzt hörte es auf und ich bekomme diese Fehlermeldung.
Exception Type: UnboundLocalError
Exception Value:
local variable 'a' referenced before assignment
die ich nie verwenden, um ein paar Wochen sich nicht verändert, alles so machte ich a-und b-global.
def combineProcess(request):
carID1 = request.POST['carID1']
carID2 = request.POST['carID2']
global a,b
for x in range (0,3):
a += carID1.length(x)
b += carID2.length(x)
if a.equals(b):
//do something
Nun bin ich immer diese Fehlermeldung.
Exception Type: NameError
Exception Value:
name 'a' is not defined
Dann ich entfernt die global line-und nur diese
a = "P"
und bekam die folgende Fehlermeldung
str object has no attribute length() or len()
das hat mich nun verwirrt, wie hat dieser code nicht mehr funktioniert, und warum kann er erkennen, dass ein string-Objekt hat eine len () - Methode. vor allem bin ich verloren, wie mein code ging von der Arbeit nicht über ein zwei Wochen ab.
- Bitte beheben Einrücken. Es ist für uns unmöglich zu wissen, was in den Funktionen. Verwenden Sie 4 Räume um einen code-block und weitere 4 Räume zu zeigen, die die Einrückung der Funktion.
- Sind Sie sicher, dass Sie schreiben Python hier, sondern als etwas anderes wie Java? Ganz abgesehen von dem Problem mit
.length()
, strings nicht mit einer.equals
Methode in Python entweder. - ich denke, das könnte das problem sein, weil ich code täglich mit zwei Sprachen python und c#, so dass ich vielleicht einfach nur verwirrend, die zwei
Du musst angemeldet sein, um einen Kommentar abzugeben.
Syntax
Folgende ist die syntax für die len () - Methode −
Beispiel
Wenn wir laufen über das Programm, produziert es Folgendes Ergebnis −
Referenz: Python-String len () - Methode
Erklärung
Dies ist, weil, obwohl
a
undb
vorhanden ist, sind Sie auch mit einer abtretungserklärung auf den Namena
undb
innerhalb der FunktioncombineProcess()
. Natürlich, dies erstellt eine variable innerhalb der Funktion als Bereich genannta
undb
.Den Python-interpreter sieht dies beim laden des Moduls Zeit-und entscheidet, dass der Globale scope ist der
a
undb
sollte nicht verwendet werden, innerhalb der lokalen Bereich, das führt zu einem problem, wenn Sie versuchen, eine Referenz-variable vor, es wird vor Ort zugewiesen.Beispiel
Wenn Sie dieses Programm ausführen, gibt es den folgenden Fehler.
Da, der Wert
Var1
wird geändert, dadurch entsteht eine variable innerhalb der Funktion als Bereich genanntVar1
. Als Folge der Fehler gemeldet wird, weil die Bedingung überprüfen,Var1 > 0
vor derVar1 =- 1
- Anweisung.Aber wenn wir ändern den code wie folgt.
Dann funktioniert es einwandfrei.
Beachten Sie, dass, wenn wir die Aussage
Var1 =- 1
vor derif
Zustand prüfen, dann wird es keinen Fehler, auch wenn Sie nicht verwendenglobal Var1
- Anweisung. So, der folgende code funktioniert einwandfrei.Referenz: Sehen Sie das SO Antwort.
Erklärung
Wahrscheinlich Sie erhalten diese Fehlermeldung, da in Python, kann man nicht vergleichen zwei strings mit
equals()
Methode. Es gibt keine solche Methode vorhanden ist.Beispiel: Vergleich von zwei strings
Können Sie
> , < , <= , <= , == , !=
zum vergleichen von zwei strings. Python vergleicht string lexikographisch ich.e mit ASCII-Wert der Zeichen. Beispielsweise zum vergleichen von zwei strings auf Gleichheit, können Sie das wie folgt tun.Ich nehme an, Sie haben kommen aus einer Sprache wie Java, wo Sie Funktionen aufrufen, die direkt auf den Saiten. Sie könnte tun, dass in Python:
Jedoch der richtige Weg, es zu tun ist etwa so:
Mit, dass gesagt wird, ich bin mir nicht sicher, was Sie versuchen zu erreichen, mit der Länge-Funktion gibt. Sie sagte, dass Ihr code überprüft, ob die ersten 3 Buchstaben von 2 strings sind die gleichen, die Sie tun können, dass in etwa so:
Diese verwendet Python ' s slice-notation die ersten 3 Zeichen jeder Zeichenkette und vergleicht diese Scheiben mit einander.