ich habe ein Problem mit dem folgendem Code und komme gerade echt nicht weiter bin am verzweifeln langsam, eine Pause wäre wahrscheinlich gut. Hat jemand eine Idee wo der Fehler ist? Ich schätze in der Schleife, aber vielleicht habe ich auch davor etwas übersehen. Grundsätzlich möchte ich in dem Code Spielzeuge auf Ebenen einer Palette legen. 5 Ebenen mit jeweils 8 Spielzeugen. Dabei berücksichtige ich Fläche, Volumen und Gewicht, jedoch wird immer nur die erste Ebene befüllt.
Danke im Voraus falls jemand einen Tipp hat.
Code: Alles auswählen
import random
# Produkte
produkte = {
"Spielzeug1": {"gewicht_kg": 20, "abmessungen_cm": (36, 31, 35)},
"Spielzeug2": {"gewicht_kg": 20, "abmessungen_cm": (36, 31, 35)},
"Spielzeug3": {"gewicht_kg": 20, "abmessungen_cm": (36, 31, 35)},
"Spielzeug4": {"gewicht_kg": 20, "abmessungen_cm": (36, 31, 35)},
"Spielzeug5": {"gewicht_kg": 20, "abmessungen_cm": (36, 31, 35)},
"Spielzeug6": {"gewicht_kg": 20, "abmessungen_cm": (36, 31, 35)},
"Spielzeug7": {"gewicht_kg": 20, "abmessungen_cm": (36, 31, 35)},
"Spielzeug8": {"gewicht_kg": 20, "abmessungen_cm": (36, 31, 35)},
}
# Abmessungen und Gewicht der Palette
palette_abmessungen_cm = (120, 80, 180)
palette_max_gewicht_kg = 800
# Berechnung des Volumens eines Produkts
def berechne_volumen(abmessungen):
return abmessungen[0] * abmessungen[1] * abmessungen[2]
# Berechnung der Fläche eines Produkts
def berechne_flaeche(abmessungen):
return abmessungen[0] * abmessungen[1]
# Produkte nach Gewicht sortieren
produkte = dict(sorted(produkte.items(), key=lambda x: x[1]["gewicht_kg"], reverse=True))
# Zufällige Bestellung zwischen 220 und 260 Produkten
anzahl_produkte = random.randint(220, 260)
bestellte_produkte = list(produkte.keys())[:anzahl_produkte]
# Berechnung der Anzahl der benötigten Paletten
paletten_anzahl = (anzahl_produkte + 39) // 40 # 40 Produkte passen auf eine Palette
# Ausgabe der Anzahl der Paletten
print(f"Es werden {anzahl_produkte} Produkte bestellt.")
print(f"Es werden {paletten_anzahl} Paletten benötigt, da 40 Produkte auf eine Palette passen.")
# Ebenen pro Palette und Produkte pro Ebene
ebenen_pro_palette = 5
produkte_pro_ebene = 8
# Initialisierung der Paletten
paletten = []
# Schleife zur Aufteilung der Produkte auf Paletten
for i in range(paletten_anzahl):
palette = {
"ebenen": [[] for _ in range(ebenen_pro_palette)],
"gesamt_gewicht_kg": 0,
"gesamt_volumen_cm3": 0,
"gesamt_flaeche_cm2": 0,
}
produkt_index = 0
# Schleife zur Aufteilung der Produkte auf die Ebenen der aktuellen Palette
while produkt_index < len(bestellte_produkte):
for ebene in palette["ebenen"]:
for _ in range(produkte_pro_ebene):
if produkt_index < len(bestellte_produkte):
produkt_name = bestellte_produkte[produkt_index]
produkt = produkte[produkt_name]
produkt_gewicht = produkt["gewicht_kg"]
produkt_abmessungen = produkt["abmessungen_cm"]
if (
palette["gesamt_gewicht_kg"] + produkt_gewicht <= palette_max_gewicht_kg
):
ebene.append(produkt_name)
palette["gesamt_gewicht_kg"] += produkt_gewicht
palette["gesamt_volumen_cm3"] += berechne_volumen(produkt_abmessungen)
palette["gesamt_flaeche_cm2"] += berechne_flaeche(produkt_abmessungen)
produkt_index += 1
else:
break
if produkt_index >= len(bestellte_produkte):
break
paletten.append(palette)
# Ausgabe der Paletteninformationen
for i, palette in enumerate(paletten, start=1):
print(f"\nPalette {i}:")
for ebene_num, ebene in enumerate(palette["ebenen"], start=1):
print(f"Ebene {ebene_num}: {ebene}")
print(f"Gesamtgewicht der Palette: {palette['gesamt_gewicht_kg']} kg")
print(f"Gesamtvolumen der Produkte pro Ebene: {palette['gesamt_volumen_cm3']} cm³")
print(f"Gesamtfläche der Produkte pro Ebene: {palette['gesamt_flaeche_cm2']} cm²")
Das ist die folgende Ausgabe die man erhält:
Es werden 245 Produkte bestellt.
Es werden 7 Paletten benötigt, da 40 Produkte auf eine Palette passen.
Palette 1:
Ebene 1: ['Spielzeug1', 'Spielzeug2', 'Spielzeug3', 'Spielzeug4', 'Spielzeug5', 'Spielzeug6', 'Spielzeug7', 'Spielzeug8']
Ebene 2: []
Ebene 3: []
Ebene 4: []
Ebene 5: []
Gesamtgewicht der Palette: 160 kg
Gesamtvolumen der Produkte pro Ebene: 312480 cm³
Gesamtfläche der Produkte pro Ebene: 8928 cm²
Palette 2:
Ebene 1: ['Spielzeug1', 'Spielzeug2', 'Spielzeug3', 'Spielzeug4', 'Spielzeug5', 'Spielzeug6', 'Spielzeug7', 'Spielzeug8']
Ebene 2: []
Ebene 3: []
Ebene 4: []
Ebene 5: []
Gesamtgewicht der Palette: 160 kg
Gesamtvolumen der Produkte pro Ebene: 312480 cm³
Gesamtfläche der Produkte pro Ebene: 8928 cm²
Palette 3:
Ebene 1: ['Spielzeug1', 'Spielzeug2', 'Spielzeug3', 'Spielzeug4', 'Spielzeug5', 'Spielzeug6', 'Spielzeug7', 'Spielzeug8']
Ebene 2: []
Ebene 3: []
Ebene 4: []
Ebene 5: []
Gesamtgewicht der Palette: 160 kg
Gesamtvolumen der Produkte pro Ebene: 312480 cm³
Gesamtfläche der Produkte pro Ebene: 8928 cm²
Palette 4:
Ebene 1: ['Spielzeug1', 'Spielzeug2', 'Spielzeug3', 'Spielzeug4', 'Spielzeug5', 'Spielzeug6', 'Spielzeug7', 'Spielzeug8']
Ebene 2: []
Ebene 3: []
Ebene 4: []
Ebene 5: []
Gesamtgewicht der Palette: 160 kg
Gesamtvolumen der Produkte pro Ebene: 312480 cm³
Gesamtfläche der Produkte pro Ebene: 8928 cm²
Palette 5:
Ebene 1: ['Spielzeug1', 'Spielzeug2', 'Spielzeug3', 'Spielzeug4', 'Spielzeug5', 'Spielzeug6', 'Spielzeug7', 'Spielzeug8']
Ebene 2: []
Ebene 3: []
Ebene 4: []
Ebene 5: []
Gesamtgewicht der Palette: 160 kg
Gesamtvolumen der Produkte pro Ebene: 312480 cm³
Gesamtfläche der Produkte pro Ebene: 8928 cm²
Palette 6:
Ebene 1: ['Spielzeug1', 'Spielzeug2', 'Spielzeug3', 'Spielzeug4', 'Spielzeug5', 'Spielzeug6', 'Spielzeug7', 'Spielzeug8']
Ebene 2: []
Ebene 3: []
Ebene 4: []
Ebene 5: []
Gesamtgewicht der Palette: 160 kg
Gesamtvolumen der Produkte pro Ebene: 312480 cm³
Gesamtfläche der Produkte pro Ebene: 8928 cm²
Palette 7:
Ebene 1: ['Spielzeug1', 'Spielzeug2', 'Spielzeug3', 'Spielzeug4', 'Spielzeug5', 'Spielzeug6', 'Spielzeug7', 'Spielzeug8']
Ebene 2: []
Ebene 3: []
Ebene 4: []
Ebene 5: []
Gesamtgewicht der Palette: 160 kg
Gesamtvolumen der Produkte pro Ebene: 312480 cm³
Gesamtfläche der Produkte pro Ebene: 8928 cm²