Wie erzeugt man Variablen automatisch durch das Programm in Python?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Bei Sprachen wie C oder C++ müssen Variablen und deren Typen vor einem Zugriff definiert werden. Bei Python ist das nicht so.

Eine Variable wird immer dann erzeugt, wenn erstmals ein Wert zugewiesen wird.

i = 43
s = "Hello World"

Der Typ der Variablen (Zahl, Text) ergibt sich aufgrund der Zuweisung und kann sich mit jedem Schreibzugriff verändern.

Eine Variable ist nur innerhalb einer Funktion gültig. Ansonsten ist das Schlüsselwort "global" zu verwenden. Solche Variablen behalten über Funktionen hinweg ihre Gültigkeit.

YannisFarin 
Fragesteller
 24.05.2021, 08:25

Wie man Variablen erzeugt und dies mit "Global" kenn ich. Meine Frage war aber eher, dass ich eine While Schleife programmiere, die mithilfe einer Zählerschleife z.B., so viele neue Variablen erzeugt, bis die Zählerschleife die While Schleife auf False setzt.

0
naaman  24.05.2021, 09:34
@YannisFarin

das nennt array etwa so:

Dim As Integer a

Dim array (0 To 100) As String 

While a<>100

array(a)=""

a=a+1

Wend

Legt 101 Stringvariablen, array 0-100, an.

1
YannisFarin 
Fragesteller
 24.05.2021, 09:49
@naaman

Naja, ich muss jetzt gleich zum Bahnhof, aber ich guck mir das gleich dort an. Wenn das wirklich funktioniert, wäre das mega

0

Ich bin mir nicht sicher, ob ich dich richtig verstanden habe.

Du möchtest also zur Laufzeit beliebig viele Variablen durch eine while-Schleife erzeugen lassen. Was bringt dir das? Du weißt dann ja gar nicht wie diese heißen und kannst den Wert der darin gespeichert ist nicht auslesen.

Was du ja eigentlich möchtest ist mehrere Werte zu speichern (von denen du vielleicht erst zur Laufzeit weißt, wie viele es sind). Und genau dafür sind Datenstrukturen wie zB eine Liste da. Ich glaube du hast das Prinzip einer Liste (auch Array genannt) noch nicht ganz verstanden. Du kannst dir eine Variable wie eine kleine Box vorstellen. Die Box hat einen Namen und einen Inhalt. Wenn du die Box mit dem Namen ansprichst, erhälst du den Inhalt, also den in der Variable gespeicherten Wert. Eine Liste kannst du dir vorstellen wie eine Kommode. Die hat nicht nur ein Fach, sondern mehrere. Die Kommode hat einen Namen und die einzelnen Fächer haben Nummern. In jedes dieser Fächer kannst du, genau wie in eine Variable, einen Inhalt reinlegen. Nachher kannst du dann genau dieses Fach in der Kommode wieder ansprechen.

Um dein Problem zu lösen gehst du also wie folgt vor: Vor der Schleife erzeugst du eine Liste. Die ist erstmal leer. Dann läuft die Schleife und befüllt die "Fächer" dieser Liste. In Python machst du das einfach, wie du schon geschrieben hast, mit listenname.append(wert). Nach der Schleife hast du dann beliebig viele Werte in dieser Liste gespeichert. Du kannst über die einzelnen Nummern auf einzelne Werte zugreifen oder mit einer for-Schleife alle Werte der Liste nacheinander durchlaufen.

Wenn du noch Fragen hast, melde dich gerne.

Woher ich das weiß:Studium / Ausbildung

Globale Variablen erzeugst du dynamisch so:

globals()['foo'] = 123

.... und lokale Variablen so:

locals()['bar'] = 456

Danach kannst du ganz normal ...

print(foo, bar)

... aufrufen, und erhältst ...

123 456

... als Ausgabe.

Anstelle von 'foo' und 'bar' kannst du natürlich auch jeden dynamisch generierten String nutzen, sodass nichts mehr hartkodiert ist.

Aber: Ich denke trotzdem, dass es viel viel viel bessere Möglichkeiten gibt, das umzusetzen, was du dir vorstellst!

globals() und locals() zu missbrauchen, ist eigentlich nicht die feine englische Art!

Trotzdem viel Spaß! :)

Woher ich das weiß:Berufserfahrung
YannisFarin 
Fragesteller
 27.05.2021, 19:51

Vielen Dank, Ja, Globals und Locals so zu benutzen, wirkt schon ziemlich falsch auf mich.😂 Aber gut zu wissen, dass man die auch auf solch eine Art benutzen kann. Ich danke dir für deine Hilfe.

0

Hallo,

Variablen werden durch einfache Zuweisung erzeugt, z.B.

i=42

name="Harry"

Print name[0]

H

Es gibt nicht viele Datentypen

Hier nochmal etwas ausführlicher:

Python-Tutorial: Datentypen und Variablen (python-kurs.eu)

YannisFarin 
Fragesteller
 24.05.2021, 08:22

Bedeutet das, ich muss die Variablen alle selber erzeugen und sowas wie:

def Variablen_erzeugen():

(erzeuge Variable von a - z)

sowas geht nicht?

1
heizfeld  24.05.2021, 08:30
@YannisFarin

Nein, überhaupt nicht. Das ist so wie im Basic

Braucht man eine, weist man ihr irgend einen wert zu. Damit gilt sie als vereinbart und kann sie weiterverwenden oder auch nicht. Das erste auftauchen ist die Erzeugung und Vereinbarung.

Listen und Arrays müssen natürlich anders erzeugt werden.

Python: Arrays erstellen und verwenden - so geht's - CHIP

1
YannisFarin 
Fragesteller
 24.05.2021, 08:51
@heizfeld

Das heißt, wenn ich es richtig verstanden habe, ich muss ganz viele Variablen schreiben, ihr irgendeinen Wert geben und später durch einen neuen Wert ersetzen damit dieser dann richtig zugewiesen ist? Das Ding ist nämlich, dass ich es mir etwa so vorgestellt hatte:

def Create_Notice():

input_user = input("Was möchtest du notieren?: ")

input-user2 = input("Wie soll die Notiz heißen?: ")

(Hier soll dann eine neue Variable erzeugt werden und input_user gibt den Inhalt der Variable an und input_user2 den Namen der Variable)

#Hier steht nichts

#Hier steht nichts

while True:

first_input = input("Möchtest du eine Notiz erstellen oder ansehen?: ")

first_input = first_input.lower()

if first_input == "erstellen":

Create_Notice()

elif first_input == "ansehen":

print(bereits erstellte Variablen)

elif first_input == "stop":

exit()

else:

print("Es tut mir leid, aber du hast bisher noch keine Notizen erstellt.")

So hatte ich mir das eher gedacht. Aber ich kenne keinen Befehl, der Variablen erstellen kann. :-(

1
heizfeld  24.05.2021, 09:14
@YannisFarin

input_user und input_user2 sind doch Variablen

Du möchtest also eine Notiz eingeben lassen und einen Namen dazu und das abspeichern (in eine Datei z.B.?) und später wieder laden. das geht doch

1
YannisFarin 
Fragesteller
 24.05.2021, 09:29
@heizfeld

Eher nicht in eine Datei, sondern als eine neue Variable innerhalb der datei, in dem dieses Programm auch geschrieben ist. Notizen möchte ich zwar nicht erstellen, aber ich habe das jetzt eben gerade mal schnell geschrieben. Das war einfach das am besten verständliche Beispiel, welches mir eben einfiel😅 Aber so wie ich das gerade sehe, scheint keiner solch einen Befehl zu kennen oder es gibt einfach keinen.🤔

1
heizfeld  24.05.2021, 09:56
@YannisFarin

Ich sehe nicht was du in deinem kleinen Programm vermisst. Da gibts doch keine Stelle an der es nicht weiter geht.

1

Guten Morgen.

Der genannte Thread diskutiert das Thema ja eigentlich umfassend. Wenn ich Deine Frage richtig verstehe, geht es darum, einen Variablennamen zur Laufzeit zu bestimmen. Wofür das nötig ist, dafür fehlt mir gerade die Fantasie. Meine Einschätzung ist auch, dass ein Dictionary (dict) helfen könnte.

YannisFarin 
Fragesteller
 24.05.2021, 08:55

Es ist zwar nicht zu einer Laufzeit gedacht, sondern die Zählerschleife ist dafür, dass nicht einfach unendlich viele Variablen erzeugt werden, aber ok. Die Idee mit dem dictionary ist gar nicht mal so schlecht. Da würde der append() glaub ich sogar funktionieren

0