python Variable hochzählen

Gast #6996693
Hallo an alle python Nutzer,

ich möchte in einer Funktion eine Variable hochzählen und dieser
Wert soll dann auch ausgegeben werden.
1
test = 0:
2

3
def func(...):
4
   test = test + 1
5
   print("Value: " + str(test))

Leider funktioniert dies nicht. Was mache ich da falsch?
Gast
Ist extrem viel Code. Ich brauche eigentlich nur ein klines Beispiel wie 
ich eine Variable hochzählen kann und auch wie man in den Funktionen 
Daten in eine Textdatei ablegt.
Gast
Mike schrieb:
> Ist extrem viel Code. Ich brauche eigentlich nur ein klines Beispiel wie
> ich eine Variable hochzählen kann und auch wie man in den Funktionen
> Daten in eine Textdatei ablegt.

Dir ist es zuviel Aufwand ein kurzes Programmschnipsel mit genau der 
Funktion aufzubereiten?
Dir ist es zuviel Aufwand die von mir verlinkte Doku mit genau den 
passenden Beispielen (ok, nur mit Text, aber egal) durchzulesen?

Dann mag ich auch nicht weiter darüber nachdenken...
Gast
So hier ein Beispiel:
1
import socket
2
import sys
3
import ipaddress
4
import re
5
import time
6
import paho.mqtt.client as mqtt
7
import uuid
8
import binascii
9
from random import *
10
from datetime import datetime
11

12
IP_ADDRESS = "xxx.xxx.xxx.xxx"
13
PORT = 30100
14

15
def write_data_to_textfile(txt): 
16
     with open('test.txt','w') as f: 
17
         f.write(txt) 
18

19
def on_connect(client, userdata, flags, rc):
20
    print("Connected with result code " + str(rc) + "\n")
21

22
def on_message(client, userdata, msg):
23
    print("Msg recieved from others: "+ message.payload.decode()  + " TIMESTAMP: " + str(time))
24

25
def on_message_from_udp_port_40302(client, userdata, message):
26
    time = datetime.now()
27
    write_data_to_textfile("Test"))
28
    print("\nData " + message.payload.decode() + " TIMESTAMP: " + str(time))
29

30
client = mqtt.Client()
31
client.on_connect = on_connect
32
client.on_message = on_message
33

34
client.connect(IP_ADDRESS, PORT, 60)
35

36
client.subscribe("test", qos=1)
37

38
client.message_callback_add("test", on_message)
39

40
client.loop_forever()
Gast
Hab ein Fehler gesehen. Hier die korrigierte Version:
1
import socket
2
import sys
3
import ipaddress
4
import re
5
import time
6
import paho.mqtt.client as mqtt
7
import uuid
8
import binascii
9
from random import *
10
from datetime import datetime
11

12
IP_ADDRESS = "xxx.xxx.xxx.xxx"
13
PORT = 30100
14

15
def write_data_to_textfile(txt): 
16
     with open('test.txt','w') as f: 
17
         f.write(txt) 
18

19
def on_connect(client, userdata, flags, rc):
20
    print("Connected with result code " + str(rc) + "\n")
21

22
def on_message(client, userdata, msg):
23
    print("Msg recieved from others: "+ message.payload.decode()  + " TIMESTAMP: " + str(time))
24

25
def on_message_test(client, userdata, message):
26
    time = datetime.now()
27
    write_data_to_textfile("Test"))
28
    print("\nData " + message.payload.decode() + " TIMESTAMP: " + str(time))
29

30
client = mqtt.Client()
31
client.on_connect = on_connect
32
client.on_message = on_message
33

34
client.connect(IP_ADDRESS, PORT, 60)
35

36
client.subscribe("test", qos=1)
37

38
client.message_callback_add("test", on_message_test)
39

40
client.loop_forever()
Mike schrieb:
1
def func():
2
  test = test + 1

In Python bedeuted obiges: Lese den Wert zum Namen(Symbol) "test" aus 
dem Namensräumen "Lokal" oder "Global", addiere 1 und legen der Wert 
unter **lokalen** Namen "Test" ab.

Was Du willst ist:
1
def func():
2
  global test
3
  test = test + 1

Und das bedeutet: Lese den Wert zum Namen "test" aus dem Namensraum 
"Global", addiere 1 und legen der Wert unter **globalen** Namen "test" 
ab.
Gast
Beispiel Datei schreiben:
1
class FileOperations:
2
    def open_file(self):
3
        self.file = open('test.txt', 'r+')
4

5
    def write_file(self):
6
        self.file.write("Test") 
7

8
Benutzung:
9
    fileHandler = FileOperations()
10
    fileHandler.open_file()
11
    fileHandler.write_file()

Allerdings weiß ich hier nicht wie ich da ein Text von außen zuweisen 
kann.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.