Wie erzeugt man Variablen automatisch durch das Programm in Python?
Hallo liebe Programmierer/innen,
ich möchte mich auf jeden Fall noch mal für die Hilfe letztens bedanken, da mir das sehr geholfen hat. Nun ist aber mein Problem, dass ich nicht herausfinden kann, wie man Variablen durch das Programm erzeugt. Ich habe zwar auf Google und YouTube gesucht, aber alles, was ich finden konnte, war ein Forum, wo es zwar genau darum geht, aber wo die Leute schrieben, ich zitiere: ,,Ist wahrscheinlich eine Frage die jeder für sich beantworten muss, aber ich finde solche "Lösungen" *sollten* verschwiegen werden." oder es wurde geschrieben, dass man das doch einfach mit dem "append()" Befehl in einer Liste machen kann. Eine Liste würde mir nur leider nicht wirklich etwas bringen. Sonst waren die Ergebnisse auch nur, wie man eine Variable erzeugt, also selber hartcodiert. Das kann ich aber schon und das trifft auch irgendwie meine Frage nicht. Nun weiß ich nicht mehr weiter, da das ziemlich essentiell für mich ist und ohne geht nicht, so sehr ich es auch versuche.
Das sind auch so die Momente, wo ich mich selber dafür hasse, dass mein Wissen ungenügend ist.
Da ich natürlich weiß, dass Programmierer ihre Freizeit zum Beantworten solcher Fragen opfern, weiß ich die Hilfe natürlich sehr zu schätzen und ich versuche es auch immer nach Möglichkeit zu vermeiden, da ich gelernt habe, dass man es immer erst selber versuchen soll und nicht sofort um Hilfe bitten sollte, da man so meist nichts dazu lernt, wie man Probleme auf eigene Faust löst, was ja eigentlich einer der Hauptaufgaben beim Programmieren ist.
Nur doof, dass mir einfach solche Basics fehlen. :-(
Ich wäre sehr dankbar, wenn mir da jemand weiterhelfen könnte.
*Gelöst*
6 Antworten
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.
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.
Naja, ich muss jetzt gleich zum Bahnhof, aber ich guck mir das gleich dort an. Wenn das wirklich funktioniert, wäre das mega
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.
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ß! :)
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.
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:
Bedeutet das, ich muss die Variablen alle selber erzeugen und sowas wie:
def Variablen_erzeugen():
(erzeuge Variable von a - z)
sowas geht nicht?
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.
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. :-(
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
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.🤔
Ich sehe nicht was du in deinem kleinen Programm vermisst. Da gibts doch keine Stelle an der es nicht weiter geht.
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.
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
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.