Frage!?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
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?
lhorn
User
Beiträge: 8
Registriert: Freitag 25. Februar 2005, 09:45

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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.
Antworten