variablenwert als variablennamen- WIE???

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
MalcolmYoung
User
Beiträge: 10
Registriert: Sonntag 24. Oktober 2010, 09:50

Hi Leute,

:arrow: ich würde gerne den Variablenwert einer Variable als Bestandteil des Variablennamens einer anderen Variable vergeben....

könnt ihr mir sagen wie??? :K
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

MalcolmYoung hat geschrieben:Hi Leute,
:arrow: ich würde gerne den Variablenwert einer Variable als Bestandteil des Variablennamens einer anderen Variable vergeben....
Oha... riecht nach schwerem Designfehler! :shock:

Beschreibe mal etwas ausführlicher, was Du genau erreichen willst. Da gibt es def. einen sinnvollen Weg!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@MalcolmYoung: Nein das möchtest Du nicht machen. Du möchtest Dictionaries verwenden. Denn genau das würdest Du letztendlich mit "variablen Variablennamen" auch machen, nur viel umständlicher.
MalcolmYoung
User
Beiträge: 10
Registriert: Sonntag 24. Oktober 2010, 09:50

Na toll jetzt hab ich drei viertel von der antwort getippt und dann kommst du....
Danke jetzt fällts mir wie schuppen von den Augen

Greetzzz Mal'
MalcolmYoung
User
Beiträge: 10
Registriert: Sonntag 24. Oktober 2010, 09:50

Nein, ich komm trotzdem net drauf...


Aaalsoo:

Ein Benutzer soll auswählen können aus wievielen Buchstaben ein zufälliger String bestehen soll.

Also ein input namens ende in der die anzahl eigegeben wird und dann eine for schleife bei der dann halt:

Code: Alles auswählen

for i in range(1, ende+1):
so jetz will ich eben so und sooft aus einer vorher definierten liste (enthält das ABC) einen Buchstaben auswählen, indem ich per

Code: Alles auswählen

index = random.randint(0,25)
eine Zahl erzeuge und dann mit dieser eine position in der ABC-Liste anspreche
so und das dann in einer variable speichern...
das muss ich natürlich sooft machen wie's der benutzer will, also z.B. 6mal
Also in den variablen b1-b6 speichern...

jetzt würde ich halt gerne in der forschleife:

Code: Alles auswählen

for i in range(1,ende+1):
       x=random.randint(0,25)
       b(hier müsste der wert von 1 hin, also z.B. 3) = listemitabc[x] 
dann die variablen b... bis b... zu einem Wort zusammenfügen
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Das geht doch relativ einfach:

- schau Dir mal "sample" aus dem random-Modul an
- Du willst Die zufälligen Zeichenfolgen in einer Liste speichern; wenn diese dem benutzer zuzuordnen sein soll, dann muss diese in einem Dictionary hinter dem benutzer als Schlüssel abgelegt werden
- Du willst Dir mal das string-Modul angucken :

Code: Alles auswählen

In [3]: string.ascii_letters
Out[3]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
- dazu noch die join()-Methode eines Strings

Damit sollte das imho gut zu realisieren sein!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

@OP: so?

Code: Alles auswählen

b=[random.choice(string.ascii_lowercase) for _ in range(int(input("Wieviele Buchstaben?")))]
:twisted:
Deine Variablen sind jetzt "b[0]" und nicht "b0", aber da gewöhnt man sich (besser!) dran.

ps.: plus "".join(b), falls du das brauchst...

edit2: ich mach beim editieren mehr Tüpos rein als raus :(
Zuletzt geändert von b.esser-wisser am Samstag 30. Oktober 2010, 17:51, insgesamt 2-mal geändert.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

"sample" kennt aber keine Dopplungen. Ich glaube, der OP sucht eher "random.choice":

Code: Alles auswählen

>>> import random, string
>>> rand_string = lambda x : ''.join(random.choice(string.ascii_lowercase) for _ in xrange(x))
>>> rand_string(5)
'ebcdg'
PS: zu langsam ;)
Antworten