Seite 1 von 1

Frage!?

Verfasst: Dienstag 8. März 2005, 13:26
von gast500
Ich habe folgendes:

Code: Alles auswählen

...
liste = []
z = 0
while (z ==0):
     z = int(raw_input("Zahl eingeben: "))
     a100 = holz()          #Also ein Objekt der Klasse Holz erstellen.
     liste.append(a100)

Jetzt möchte ich aber, dass jedesmal, wenn er durch die while-schleife geht das "a100" einen höher setzte, sprich nach dem erstendurchlauf "a101" dann "a102". Bei liste.append(XXX) genauso.

Ist das möglich?

Re: Frage!?

Verfasst: Dienstag 8. März 2005, 13:34
von lhorn
Wozu dient denn diese while-Schleife? So, wie Du sie programmiert hast, wird sie durchlaufen, bis der Benutzer eine Eingabe macht, die als int ungleich 0 ist. Der Sinn scheint nur zu sein, dem Benutzer so lange einen Prompt zu geben, bis er eine sinnvolle Eingabe macht. Das Problem, das Du beschreibst, passt nicht so ganz dazu.

Re: Frage!?

Verfasst: Dienstag 8. März 2005, 13:48
von Leonidas
gast500 hat geschrieben:Jetzt möchte ich aber, dass jedesmal, wenn er durch die while-schleife geht das "a100" einen höher setzte, sprich nach dem erstendurchlauf "a101" dann "a102". Bei liste.append(XXX) genauso.

Ist das möglich?
Möglich schon, aber total sinnlos.
So wie ich das sehe, willst du bei jedem Durchlauf der WHile Schleife einen Wert der Liste hinzufügen. Aber der Liste ist es total egal wie die Variable hieß, es wird ja sowieso nur der Wert gespeichert.

Code: Alles auswählen

l = []
z = 0
while z == 0:
    z = input("Zahl eingeben: ")
    y = z + 1
    l.append(y)
print l

Verfasst: Dienstag 8. März 2005, 14:35
von gast500
Es ist doch nur ein Beispiel. Mir auch klar, dass es sinnlos ist, aber das ist ja auch nur 1/100 von meinem Programm.

Vielen Dank für eure Vorschläge, wenn noch jemand einen anderen hat, bitte posten!

Verfasst: Dienstag 8. März 2005, 17:35
von Leonidas
gast500 hat geschrieben:Es ist doch nur ein Beispiel. Mir auch klar, dass es sinnlos ist, aber das ist ja auch nur 1/100 von meinem Programm.
Es ist in der Tat nur ein Beispiel, aber wir wollen dir helfen. Deswegen sage ich ja, dass es sinnlos ist, mit Variablen zu arbeiten, deren Namen während der Programmlaufzeit erstellt werden. Es gibt fast immer andere Lösungen, wie Dictionaries usw.

Verfasst: Dienstag 8. März 2005, 22:05
von gerold
gast500 hat geschrieben: wenn noch jemand einen anderen hat, bitte posten!
Hallo!

Verwende ein Dictionary.

Code: Alles auswählen

...
mydict = {}
z = 0
while (z ==0):
   z = int(raw_input("Zahl eingeben: "))
   mydict["a" + str(100 + z)] = holz()

...
# Eintrag a101 abrufen
if mydict.haskey("a101"):
   print mydict["a101"]
else:
   print "Objekt nicht gefunden"

mfg
Gerold
:-)

Verfasst: Donnerstag 10. März 2005, 16:19
von Joghurt
Und wenn du in Gerolds beispiel

Code: Alles auswählen

mydict["a"...]=...
durch

Code: Alles auswählen

globals()["a"...]=...
ersetzt, hättest du eine globale Variable erzeugt.

Wie aber schon oft gesagt, ist das in 99,9% der Fälle unnötig, sinnlos und gefährlich.