Python: < nicht unterstützt, zwischen str und int
Lerne ich Python durch Automatisieren Sie die Langweilige Sachen und ich bin in einer etwas, was ich nicht ganz verstehen.
Ich versuche, erstellen Sie eine einfache for-Schleife, die Drucke, die Elemente einer Liste in diesem format: W, X, Y, and Z
.
Mein code sieht wie folgt aus:
spam = ['apples', 'bananas', 'tofu', 'cats']
def printSpam(item):
for i in item:
if i < len(item)-1:
print (','.join(str(item[i])))
else:
print ("and ".join(str(item[len(item)-1])))
return
printSpam(spam)
Bekomme ich diesen Fehler in der Antwort:
Traceback (most recent call last):
File "CH4_ListFunction.py", line 11, in <module>
printSpam(spam)
File "CH4_ListFunction.py", line 5, in printSpam
if i < len(item)-1:
TypeError: '<' not supported between instances of 'str' and 'int'
Jede Hilfe ist willkommen. Danke für die Hilfe ein newbie.
- Sie sind Missverständnis, wie
for ... in ...
funktioniert.i
ist bereits die Zeichenfolge aus der Liste, nicht der index, so<
ist vergleichen von strings und ganzen zahlen, unditem[i]
macht keinen Sinn, entweder. Auch versuchen Sie zujoin
einen einzigen Punkt! - Sie sind im Grunde tut
"s" < 4
. Das macht keinen Sinn. - In diesem Fall
i
ist ein string. Sie versuchen, eine Zeichenfolge vergleichen, um die Länge einer Liste. - Anstatt einer Schleife, die Sie verwenden können, Liste Scheiben wie
item[0:-1]
alle zu erhalten, aber das Letzte Element, unditem[-1]
um das Letzte Element. Nehmen Sie den ersten Satz mit,
, und dann verbinden Sie dieses mitand
bis zum letzten. - argh, Sie hat mich geschlagen, während ich war zu beantworten 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ah, aber
for i in array
iteriert über jedes element, soif i < len(item)-1:
ist der Vergleich ein string (das array-elementitem
) und ein integer (len(item)-1:
).So, das problem ist, das du missverstanden wie
for
arbeitet in Python.Quick-fix?
Können Sie ersetzen Sie Ihren
for
mitfor i in range(len(array))
alsrange
funktioniert wie folgt:Erhalten somit:
Den Ausgang wahrscheinlich nicht, was du erwartest, aber, wie
'c'.join(array)
verwendet 'c' als "Klebstoff" zwischen den verschiedenen Elementen der array - und was ist ein string, wenn kein array von chars?So, die Ausgabe wird sein:
Können wir tun, sowieso besser.
Python unterstützt die so genannte slice-notation und negativen Indizes (beginnen am Ende des Arrays).
Seit
Haben wir, dass
Und
Daher, Sie können schreiben Sie Ihre Funktion so einfach
Das ist es.
Es funktioniert.
P. S.: Man las, was über Python und array-notation:
for
notation in Python, die ich gelesen habe, noch, und ich bin ein wenig peinlich, dass ich vergessen habe dierange()
Funktion in meinem code; CodeAcademy zumindest mich gelehrt, dass. Ich werde gehen Sie zurück und versuchen Sie es mit einem anderen code die Praxis und sehen, ob ich kann machen, dieses mal etwas anderes. Vielen Dank für Ihre Antwort!