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

Frage!?

Beitragvon gast500 » Dienstag 8. März 2005, 13:26

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
Kontaktdaten:

Re: Frage!?

Beitragvon lhorn » Dienstag 8. März 2005, 13:34

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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Frage!?

Beitragvon Leonidas » Dienstag 8. März 2005, 13:48

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 Modvoice
gast500

Beitragvon gast500 » Dienstag 8. März 2005, 14:35

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!
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 8. März 2005, 17:35

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 Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Dienstag 8. März 2005, 22:05

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.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 10. März 2005, 16:19

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.

Wer ist online?

Mitglieder in diesem Forum: hatschy