Sie können einem Operator nicht zuweisen.
Sehen Sie sich Ihre Codezeile:
dsp + str(i) = Image.open("L1.jpg")
Sie haben dsp + str(i)
auf der linken Seite, ein Ausdruck der Summe Operator enthält +
. Selbst wenn dies richtig ausgewertet würde, wäre das Ergebnis beispielsweise eine Zeichenfolge wie "dsp1"
. Sie können keiner Zeichenfolge einen Wert zuweisen.
Und da solche Verwendungen keinen Sinn ergeben, unterstützt Python keine Operatoren auf der linken Seite einer Zuweisung.
Sie möchten einen Variablennamen dynamisch erstellen, anstatt ihn hart zu codieren. Obwohl dies unter Verwendung von exec()
möglich ist, wird dringend davon abgeraten, da dies leicht zu Fehlern in Ihrem Code führt, schwer zu lesen und noch schwieriger zu debuggen ist. Es kann sogar ein Sicherheitsrisiko (Code-Injektion) sein, wenn alles, was auf diese Weise ausgewertet wird, nicht vertrauenswürdige Daten wie Benutzereingaben ist.
Was sollten Sie stattdessen ein einfaches list
:
dsp = []
for i in range(0,3):
dsp[i] = Image.open("L1.jpg") # for whatever reason you open the same file 3 times...
Sie eine Liste erstellen, einfach die eckigen Klammern.Wenn Sie es mit einigen Werten initialisieren wollen, schreiben sie einfach nach innen, durch Kommata getrennt:
my_list = ["zero", 1, 2, "three", 4.5, True]
Sie Zugriff Elemente einer Liste durch einen Indexwert spezifiziert, wobei 0 für das erste Element Start:
print(my_list[3]) # output: three
können Sie auch einfach Schleife über alle Elemente einer Liste:
for item in my_list:
print(item)
# output:
# zero
# 1
# 2
# three
# 4.5
# True
Warum brauchen Sie dynamische Variablennamen? Könnten Sie diese stattdessen Elementen in einer Liste oder Schlüssel in einem Wörterbuch zuweisen? – Andy
Sie brauchen die 0 nicht in Reichweite. Du kannst einfach 'range (3)' machen. –
Ich verstehe nicht mit Liste. Könntest du es zeigen? @Andy – Sugantharaja