Seite 1 von 1

Brauche Hilfe bei einem Code

Verfasst: Dienstag 3. Januar 2023, 21:43
von LiiNKSYS
Hallo,

Kann mir bitte jemand sagen wo mein Fehler in der Python Datei ist. Die Datei wird ausgeführt und beendet ohne Fehlercode. Sie macht aber einfach gar nichts! Vielleicht schaut von euch jemand rein und sieht sofort den Fehler und kann mich korrigieren! Vielen Dank im Voraus!
Die Einrückungen stimmen in PyCharme. Wusste leider nicht wie ich den Code hier einfügen kann und habe Copy/paste betrieben :D

Pythoncode:
import json


eingabefeld = "000000000"


def find_index(eingabefeld, python_liste):
with open("Inventar.json", 'r') as f:
python_liste = json.load(f)
print(python_liste)

index = -1

for i, item in enumerate(python_liste):
if item["Key"] == eingabefeld:
index = i
ergebnis = index
print(ergebnis)


return index


Inventar.json :

{
"Teilenummer": "000000000",
"Lagerort": "M000",
"Beschreibung": "Schraubendreher",
"Bestand": 3
}

Re: Brauche Hilfe bei einem Code

Verfasst: Dienstag 3. Januar 2023, 21:48
von sparrow
Bitte poste deinen Code in Code-Tags. Ansonsten bleiben die Einrückungen nicht erhalten.
Die Code-Tags werden eingefügt, wenn du den </> Button im "vollständigen Editor" drückst.

Zu deinem Code:
Du defnierst eine Funktion, fürst aber nichts aus.

Re: Brauche Hilfe bei einem Code

Verfasst: Dienstag 3. Januar 2023, 21:49
von LiiNKSYS
Ich danke dir!

Re: Brauche Hilfe bei einem Code

Verfasst: Dienstag 3. Januar 2023, 21:50
von LiiNKSYS
Komisch finde ich nur, dass auch das "print(Python_liste)" nicht in der Console ausgegeben wird. Kannst du mir sagen wieso?

Re: Brauche Hilfe bei einem Code

Verfasst: Dienstag 3. Januar 2023, 21:52
von __deets__
Aus dem gleichen Grund?

Re: Brauche Hilfe bei einem Code

Verfasst: Dienstag 3. Januar 2023, 21:54
von Sirius3
Wo ist das Hauptprogramm? Die Datei definiert nur eine Funktion, die wird aber nie aufgerufen.

`python_liste` wird als Argument übergeben, aber sofort mit dem Inhalt der json-Datei überschrieben, das Argument also unsinnig.
Ein Wörterbuch `python_liste` zu nennen, ist sehr verwirrend, weil es keine Liste ist und der Inhalt auch nichts mit python zu tun hat. Oder sind Deine Beispieldaten falsch? Denn der weiter Code läßt vermuten, dass in der json-Datei doch eine Liste steht. Aber auch dann ist `_liste` in einem Variablenname schlecht, `teile` wäre ein besserer Name.
Textdateien öffnet man immer mit einem Encoding, hier utf8.
`index`, `i` und `ergebnis` haben alle den selben Wert. Zwei davon sind also unnötig.
-1 bei nicht gefunden ist ein schlechter Wert. Besser wäre es, eine Exception zu werfen.
"Key" ist nicht Bestandteil des Wörterbuchs.

Code: Alles auswählen

def find_index(teilenummer):
    with open("Inventar.json", 'r', encoding="utf8") as f:
        teile = json.load(f)

    for index, teil in enumerate(teile):
        if teil["Teilenummer"] == teilenummer:
            return index
    raise ValueError(f"{teilenummer} not found")
Je nachdem, wie oft `find_index` aufgerufen werden soll, ist es schlecht, dass da immer wieder die selbe Datei gelesen wird. Ist der Index überhaupt ein sinnvoller Rückgabewert? Wie wird diese Funktion benutzt?

Re: Brauche Hilfe bei einem Code

Verfasst: Dienstag 3. Januar 2023, 22:02
von LiiNKSYS
Das ist nur ein "Test" Code. Ich habe einen Code für unser Lager geschrieben, der nach einer Teilenummer in einer Liste suchen soll und daraufhin den Lagerort usw. ausgeben soll. Die Daten wie "Bestand" müssen im Nachhinein bearbeitet werden und ich wollte sie deshalb in einer JSON Datei packen. Den Code oben habe ich nur geschrieben, um zu testen, ob das ganze funktioniert und wie es funktioniert. Ich habe zuvor noch nie mit JSON gearbeitet. Aus irgendeinem Grund fällt es mir aber sehr schwer.

Code: Alles auswählen

import json

eingabefeld = "000000000"


def find_index(eingabefeld, python_liste):
    with open("Inventar.json", 'r') as f:
        python_liste = json.load(f)
        print(python_liste)

    index = -1

    for i, item in enumerate(python_liste):
        if item["Key"] == eingabefeld:
            index = find_index(eingabefeld, python_liste)
            if index != -1:
                item = python_liste[index]
                print(item["Key"])
                print(item["Value"])

    return index

Re: Brauche Hilfe bei einem Code

Verfasst: Dienstag 3. Januar 2023, 23:06
von Sirius3
Auch Beispielcode sollte korrekt sein. Und wenn "Key" eigentlich "Teilenummer" sein sollte, dann versteht hier niemand, ob Du da etwas falsch verstanden hast, oder ob das nur dem "Beispiel" geschuldet ist.
Mit Deinem neuen Code kann ich nichts anfangen, weil der kommentarlos an Deine letzte Nachricht angehängt worden ist, und noch weniger Sinn macht, als Dein erster Code. Und es läßt nicht erkennen, ob Du irgendetwas von meiner Antwort verstanden hast.
Geh also nochmal ein paar Schritte zurück und erkläre erst einmal, was für ein Problem Du lösen möchtest und welche Schritte Du zur Lösung versucht hast.

Re: Brauche Hilfe bei einem Code

Verfasst: Donnerstag 5. Januar 2023, 14:35
von Kebap
> Ich habe zuvor noch nie mit JSON gearbeitet. Aus irgendeinem Grund fällt es mir aber sehr schwer.

Dann mal weg von JSON. Mach das Problem kleiner und einfacher. Löse erstmal das einfache Problem. Wie kannst du ein Programm schreiben, das eine Liste ausgibt? Die Liste muss nicht aus einer JSON Datei kommen, sondern die kannst du einfach im Programm selbst mit 2-3 "Test" Werten vorbelegen. Es geht nur darum zu testen, ob die Ausgabe funktioniert und wie sie funktioniert.