Python variable um 1 erhöhen?
Hallo,
Ich befinde mich in der Lernphase.
ich versuche eine Variable immer um eins zu erhöhen, sobald man eine bestimmte Aktion ausführt. Ich habe es so versucht:
count = 0
count =+1
Leider funktioniert das nicht wirklich..
Ich möchte das count immer eins hochzählt, also einmal eine bestimmte Aktion ausführen ist count = 1, nochmal eine bestimmte Aktion ausführen ist count = 2.
Liebe Grüße
4 Antworten
Soweit ich das in einem Kommentar von dir mitbekommen habe, willst du den Wert nicht nur einmalig erhöhen, sondern bei jedem Programmstart.
Dazu solltest du beachten, dass normale Variablen, die während des Programmdurchlaufs im Arbeitsspeicher zwischengespeichert werden, nach einem Programmdurchlauf für den nächsten Programmdurchlauf nicht mehr zur Verfügung stehen. Wenn du die Variablen für den nächsten Programmdurchlauf benötigst, musst du den Variablenwert in einer Datei abspeichern.
Beispiel:
import json, warnings
#Lade den Wert der count-Variable:
try:
with open('count_data.json', 'r') as f:
count_data = json.load(f)
count = count_data['count']
except FileNotFoundError:
count = 0
except KeyError:
count = 0
warnings.warn("Die Datei count_data.json scheint beschädigt gewesen zu sein. Der Counter wurde zurückgesetzt.")
#Erhöhe den Wert der count-Variable:
count += 1
#Speichere den neuen Wert der count-Variable:
with open('count_data.json', 'w') as f:
json.dump({'count': count}, f)
>>> count=0
>>> count
0
>>> count+=1
>>> count
1
Doch, genau so funktioniert das. (Nur, daß das + vor dem = kommt), Du darfst aber auch:
>>> count=count+1
>>> count
2
nutzen.
Danke für die Antwort, aber bei mir bleibt count immer 0, er zählt gar nicht hoch?
count = 0
count = count + 1
Lg
count = count + 1
count += 1
Die Frage war, wie man die Variable inkrementiert. Das funktioniert mit beiden Befehlen. Die zweite Version ist natürlich kürzer. Wie du die Variable auf 0 setzt, hast du ja schon in deinem Code stehen (count = 0).
Bei mir bleibt die Variable aber auf 0 ?
Bist du sicher, dass die Zeile schon ausgeführt wurde?
Wie sieht dein aktueller Code aus und wie prüfst du den Variablen-Inhalt?
Ich habe deinen Code kopiert und unverändert ausgeführt. Ergebnis:
0
Neuer Counter: 1
Also mMn ist das richtig.
Ja so wird es in der Konsole angezeigt, aber immer wenn ich den ausführe kommt das gleiche raus, aber ich möchte immer das es sich nach jedem Neustart um 1 erhöht.
Diese klitzekleine Information hast du uns vorenthalten.
Wenn du ein Programm neu startest, sind alle Variablen leer, also 0 in dem Fall.
Du musst den Wert vor dem Programmende in einer Datei speichern und beim nächsten Programmstart wieder aus der Datei lesen.
Das will ich ja in der Variable machen, ich möchte in der Variable die neue Zahl speichern.
Ja, in der Variablen speicherst du die Zahl. Zu Beginn eines Programms sind die Werte aller Variablen aber null oder nicht definiert. Wenn du möchtest, dass ein Wert auch nach Neustart des Programms erhalten bleibt musst du den Wert vor Programmende in eine Datei schreiben. Dort bleibt der Wert auch nach Programmende erhalten. Beim nächsten Programmstart liest du den Wert aus der Datei in die Variable.
Bsp: Vor Programmende hat die Variable den Wert 7. Den speicherst du in einer Datei. Am Anfang des Programms liest du den Wert, also die 7 in dem Fall, aus der Datei und legst ihn wieder in der Variablen ab. Somit hast du wieder den Zustand wie vor dem Ende des vorherigen Programmlaufs.
Kann ich nicht einfach die Variable auf 2 machen oder so?
Ich möchte lediglich den Wert von count = 0 auf count = 1, count = 2 haben mehr nicht.
Dann schreibst du nochmal count +=1. So oft, wie du möchtest.
Dein Problem war doch gerade, dass der Wert nach dem Programmneustart nicht erhalten bleibt. Was ist jetzt dein Problem?
Der Wert ändert sich ja aber in der Variable nicht.. count = 0 soll sich immer zu count = 1, count = 2, count = 3 usw. ändern, immer nach dem Neustart um eins erhöhen
Genau. Zu diesem Zwecke speicherst du vor Programmende den Wert in einer Datei und....... siehe oben. Mehr kann ich leider nicht dazu sagen. Möchtest du wissen, wie das geht, oder was ist deine Frage?
Alles klar. Ja gerne wie soll das gehen?
Um den Wert in eine Datei zu schreiben, musst du 1. die Datei öffnen, 2. den Wert reinschreiben, 3. die Datei schließen.
Aber das ist ein Kapitel für sich. Müsstest du dich erst mal einlesen. Hier z.B.:
https://realpython.com/read-write-files-python/
Sry, hab auf die Schnelle nix kürzeres gefunden
Soll ich das z.B. in einer Json oder Text Datei speichern?
Aber ich frage mich nur, man kann doch eine Variable erstellen, die pro Neustart die Zahl sich ändert, dafür benötigt man doch eig keine Datei?
ich versuche es nochmal zu erklären.
Meine Variable „count“ hat den Wert 0, nun sage ich, ich möchte das meine Variable von 0 zu 1 geändert werden soll, dann sieht meine Variable count so aus, von „count = 0“ zu „count = 1“
Wo denkst du denn, dass der Wert gespeichert bleibt, wenn nicht in einer Datei?
In der Variable, die Variable soll sich lediglich von 0 zu 1 usw. ändern, damit ist die Variable ja geändert.
Die Werte von Variablen liegen im RAM. Wenn du ein Programm startest, wird dem Programm ein bestimmter Speicherbereich im RAM zu gewiesen. Dort liegt irgendwelcher Müll drin, denn dort lagen zuvor irgendwelche anderen Daten oder Programme. Du kannst also nicht erwarten, dass da noch die Werte liegen, als das Programm irgendwann zuvor gestartet wurde. Wenn der PC zwischendrin ausgeschaltet wurde, erst recht nicht. RAM ist flüchtig. Deswegen gibt es persistente Speicher wie Festplatten, SSDs usw, damit die Werte in Variablen nicht verloren gehen, wenn ein Programm beendet wird.
Aus demselben Grund speicherst du ja ein Word-Dokument bevor du Word schließt. Sonst wäre das Dokument im RAM ja weg. Die Bearbeitung des Dokuments findet ja im RAM statt. Das Dokument ist sozusagen eine dicke fette Variable.
Danke für die Erklärung! Alles klar, dann probiere ich es mal in einer Json zu speichern. Danke
Überschreibt sich dann aber auch der Wert in der Json? Also von 1 zu 2?
In einer Datei steht das, was zuletzt reingeschrieben wurde.
Du musst folgendes verwenden:
counter += 1
oder
counter = counter + 1
ich hoffe ich konnte dir helfen.
Viel Spaß beim lernen😉
Danke für die Antwort, ich möchte aber das die Variable ,,count" als erstes 0 hat, danach 1, danach 2 usw. hierbei gibt es doch keine Count Variable die 0 hat?