Liste; Name der Liste wird nicht erkannt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Feirefitz
User
Beiträge: 7
Registriert: Montag 21. August 2023, 12:33

Hallo,

Ich mache erste Versuche in der Programmierung mit Python und bin im Zuge dessen auf ein Problem gestoßen.
Leider schaffe ich es nicht, folgende Sache zum Laufen zu bringen:

Ich möchte ein paar Variablen definieren, die ich in weitere Folge in einer Formel verwende.
Eine der Variablen ist eine Liste (mit float-Werten).

def Percentile_for_continuous_Distri (distri):

distri = [2.0, 5.1, 7.4, 6.5, 5.4]

data = len(distri)

print(data)


Der Teil, der bei mir nicht funktioniert, sieht bisher so aus, wie oben geschrieben.
Mit der "len"-Funktion möchte ich abzählen, wie viele Werte in der Liste stehen.
Diesen Term habe ich dann als "data" benannt.

Das Problem: Die Print-Funktion erkennt "data" nicht und gibt mir die Fehlermeldung "Undefined name 'data' aus.

Könnte mir jemand sagen, wo da der Fehler liegt?

Vielen Dank, schöne Grüße
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte die Code-Tags zum setzen von Code hier benutzen. Denn sonst gehen die in Python wichtigen Einrueckungen verloren. Das ist der </>-Knopf im vollstaendigen Editor.

Und dann wird dein Problem auch recht schnell klar: du berechnest data in deiner Funktion. Aber rufst die Funktion weder auf, noch gibst du die errechneten Werte zurueck, womit das print davon ja nix wissen kann.

Code: Alles auswählen

def rechne():
    data = 1000
    return data

data = rechne()
print(data)
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Feirefitz: Was in dem Beispiel auch keinen Sinn macht ist das `distri`-Argument das überhaupt nicht verwendet wird.

Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassennamen (PascalCase).

Namen sollten keine kryptischen Abkürzungen enthalten, oder gar nur daraus bestehen.

Funktions- und Methodennamen werden üblicherweise nach Tätigkeiten benannt, damit man weiss was die machen und sie leichter von eher passiven Werten unterscheiden zu können.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Feirefitz
User
Beiträge: 7
Registriert: Montag 21. August 2023, 12:33

Hallo, vielen Dank für die Antwort.

(1.) Ich weiß leider (noch) nicht, wie ich die Code-Tags verwende.

Ich habe jetzt mal das "distri"-Argument entfernt.

Wenn ich "print" aufrufe, erhalte ich wieder die Fehlermeldung "undefined name 'data'".

Mir ist allerdings nicht klar, warum. Sollte "data" nicht durch len(distribution) definiert sein?

Danke, viele Grüße

(Die Zeilen 2 bis 4 sind eingerückt)


def Percentile_for_continuous_Distri ():

distribution = [2.0, 5.1, 7.4, 6.5, 5.4]

data = len(distribution)

return data

print(data)
Sirius3
User
Beiträge: 18273
Registriert: Sonntag 21. Oktober 2012, 17:20

Damit eine Funktion ausgeführt wird, muß man sie auch aufrufen. Das mit den Abkürzungen gilt natürlich auch für Funktionsnamen:

Code: Alles auswählen

def percentile_for_continuous_distribution():
    distribution = [2.0, 5.1, 7.4, 6.5, 5.4]
    return len(distribution)

data = percentile_for_continuous_distribution()
print(data)
Benutzeravatar
Dennis89
User
Beiträge: 1555
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,
Feirefitz hat geschrieben: Montag 21. August 2023, 18:31

Code: Alles auswählen

def Percentile_for_continuous_Distri ():
    
    distribution = [2.0, 5.1, 7.4, 6.5, 5.4]

    data = len(distribution)
    
    return data

print(data)
Ja "data" ist definiert in der Funktion. Mit "return" gibst du "data" auch an denjenigen zurück, der die Funktion aufruft, aber genau der fehlt.

Der Python-Interpreter für nicht jeden Code einfach so von oben nach unten aus. Du musst gezielt die Funktion "Percentile_for_continuous_Distri" aufrufen und das was in der Funktion zurück gegeben wird, an einen Namen binden.

Beispiel

Code: Alles auswählen

def mach_was():
    return "Hallo"
    
# Hier wird die Funktion aufgerufen und das was sie zurueck gibt
# ist hier unter "rueckgabe_der_funktion" verfügbar    
rueckgabe_der_funktion = mach_was()
print(rueckgabe_der_funktion)
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Feirefitz
User
Beiträge: 7
Registriert: Montag 21. August 2023, 12:33

Vielen Dank für die Antworten, ich werde das ausprobieren & im Bedarfsfall noch einmal melden.
Antworten