Python variable um 1 erhöhen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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)

TheDinosaurier 
Fragesteller
 10.08.2022, 15:38

Dankeschön! Genau danach habe ich gesucht. <3

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


TheDinosaurier 
Fragesteller
 10.08.2022, 02:34

Danke für die Antwort, aber bei mir bleibt count immer 0, er zählt gar nicht hoch?
count = 0
count = count + 1

Lg

0

Du musst folgendes verwenden:

counter += 1

oder

counter = counter + 1

ich hoffe ich konnte dir helfen.

Viel Spaß beim lernen😉

Woher ich das weiß:eigene Erfahrung
count = count + 1
count += 1
Woher ich das weiß:Studium / Ausbildung – Datenverarbeitungs-Kfm, Hobby- und Profi-Programmierer

TheDinosaurier 
Fragesteller
 10.08.2022, 02:31

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?

0
DonkeyShot  10.08.2022, 02:33
@TheDinosaurier

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

1
DonkeyShot  10.08.2022, 02:37
@TheDinosaurier

Bist du sicher, dass die Zeile schon ausgeführt wurde?

Wie sieht dein aktueller Code aus und wie prüfst du den Variablen-Inhalt?

0
DonkeyShot  10.08.2022, 02:40
@TheDinosaurier

Ich habe deinen Code kopiert und unverändert ausgeführt. Ergebnis:

0
Neuer Counter: 1

Also mMn ist das richtig.

1
TheDinosaurier 
Fragesteller
 10.08.2022, 02:42
@DonkeyShot

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.

0
DonkeyShot  10.08.2022, 02:44
@TheDinosaurier

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.

1
TheDinosaurier 
Fragesteller
 10.08.2022, 02:45
@DonkeyShot

Das will ich ja in der Variable machen, ich möchte in der Variable die neue Zahl speichern.

0
DonkeyShot  10.08.2022, 02:50
@TheDinosaurier

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.

0
TheDinosaurier 
Fragesteller
 10.08.2022, 02:54
@DonkeyShot

Ich möchte lediglich den Wert von count = 0 auf count = 1, count = 2 haben mehr nicht.

0
DonkeyShot  10.08.2022, 02:55
@TheDinosaurier

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?

0
TheDinosaurier 
Fragesteller
 10.08.2022, 02:56
@DonkeyShot

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

0
DonkeyShot  10.08.2022, 02:57
@TheDinosaurier

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?

0
TheDinosaurier 
Fragesteller
 10.08.2022, 03:13
@DonkeyShot

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“

0
TheDinosaurier 
Fragesteller
 10.08.2022, 03:16
@DonkeyShot

In der Variable, die Variable soll sich lediglich von 0 zu 1 usw. ändern, damit ist die Variable ja geändert.

0
DonkeyShot  10.08.2022, 03:20
@TheDinosaurier

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.

1
TheDinosaurier 
Fragesteller
 10.08.2022, 03:24
@DonkeyShot

Danke für die Erklärung! Alles klar, dann probiere ich es mal in einer Json zu speichern. Danke

0
TheDinosaurier 
Fragesteller
 10.08.2022, 03:24
@DonkeyShot

Überschreibt sich dann aber auch der Wert in der Json? Also von 1 zu 2?

0