Was bedeutet: TypeError: Kann 'str' und 'list' Objekte nicht verketten?

8

Was bedeutet dieser Fehler?

  

TypeError: kann 'str' und 'list' Objekte nicht verketten

Hier ist ein Teil des Codes:

%Vor%     
Drew Noakes 18.06.2009, 18:49
quelle

3 Antworten

11

Ich bin mir nicht sicher, dass Sie wissen, dass cmd ein ein-Element list und keine Zeichenfolge ist.

Wenn Sie diese Zeile in die folgende Zeile ändern, wird eine Zeichenfolge erstellt, und der Rest Ihres Codes funktioniert:

%Vor%

Ich nehme an, Sie haben Klammern verwendet, um die Operationen zu gruppieren. Das ist nicht notwendig, wenn alles in einer Zeile steht. Wenn Sie es über zwei Zeilen aufteilen möchten, sollten Sie Klammern und keine Klammern verwenden:

%Vor%

Alles zwischen eckigen Klammern in Python ist immer a list . Ausdrücke zwischen Klammern werden als normal ausgewertet, sofern im Ausdruck kein Komma vorhanden ist. In diesem Fall fungieren die Klammern als tuple -Konstruktor:

%Vor%     
Triptych 18.06.2009, 19:03
quelle
4

String-Objekte können nur mit anderen Strings verkettet werden. Python ist eine stark typisierte Sprache. Es wird nicht Typen für Sie zwingen.

können Sie tun:

%Vor%

aber nicht:

%Vor%

In Ihrem Fall versuchen Sie, eine Zeichenfolge und eine Liste zu erstellen. Das wird nicht funktionieren. Sie können das Element jedoch an die Liste anhängen, wenn dies das gewünschte Ergebnis ist:

%Vor%     
Corey Goldberg 18.06.2009 18:52
quelle
2

Es gibt ein weiteres Problem im OP-Code:

z = ('0.') dann später for k in z:

Die Klammern in der ersten Anweisung werden ignoriert, was zur zweiten Anweisung führt, die k zuerst mit '0' verbindet und dann '.' ... sieht so aus, als wäre z = ('0.', ) beabsichtigt.

    
John Machin 19.06.2009 00:02
quelle

Tags und Links