Python funktion fragee?

3 Antworten

Die Variablen musst du in der Funktion selber definieren, deswegen erstellt man immer eine 2. Python Datei nur mit Funktionen und importiert sie per Code in die Main Datei. Deswegen funktioniert auch nicht dein Code, weil die restlichen Variablen nur "lokal" in dieser Datei existieren -> Funktionen und restlicher Code sind getrennt.

Dein Ziel ist es ja immer wenn du deine Funktion angewendet hast x = x + 1 zu rechnen, also kannst du es simpel abfragen. Wenn die Funktion keinen Fehler beinhaltet und ausgeführt werden kann, dann addierst du 1 dazu (if).

x = 0

def funk():
    pass

while True:
    funk()
    if funk:
        x = x + 1
        print(x)

Falls du das wirklich per Funktion machen willst, dann musst du das in der Funktion abfragen und ausgeben:


def funk():
    x = 0
    while True:
        x = x + 1
        print(x)

funk()

Merk dir, wenn du eine Funktion im Main Code erstellst sind die Variablen getrennt vom restlichen Code.

Ansonsten funktioniert das noch (wie schon gesagt) mit 2 Dateien und du importierst die Funktionen in deine Main Datei, ist aber sehr viel unnötiger Aufwand.

Hoffe ich konnte dir helfen.

Innnerhalb einer Funktion kannst Du eine globale Variable entweder lesen oder lokal neu definieren:

def f():
  y = x+1 # ok: globales x wird gelesen
  x = "Hallo" # ok: globales x wird nicht geändert.

Du versuchst aber, eine globale Variable zu ändern. Das ist in 99% aller Fälle ein Logikfehler und deshalb in Python nicht automatisch erlaubt. Wenn es gebraucht wird, musst Du das explizit dazu schreiben:

def f():
  global x
  x = x+1

SeeZzer  08.10.2020, 17:17

Die Funktion 'global' kannte ich selber nicht in Python, danke dir ebenfalls bro.

0

Genau deswegen bin ich gegen Python für Anfänger. Hättest du das gleiche mit Java gemacht dann wüsstest du das eine Methode bzw. Funktion so nocjh funktionieren kann.


ralphdieter  08.10.2020, 16:54

Java hätte solchen Code ohne Warnung compiliert. Dass Python hier meckert, ist eine der vielen Besonderheiten, die diese Sprache so anfängerfreundlich macht.

0