Skip to content
Snippets Groups Projects
Commit b7a33850 authored by Christof Kaufmann's avatar Christof Kaufmann
Browse files

Notebooks from ckaufmann/akis-python-framework@b71bb939

parent cf2e0503
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id:0005-c3af84fafa7e922e7bd43da2346d714eba34f3092aa23328cccf97d5317 tags:
# Lagerverwaltung
Du arbeitest an einer Software für die Lagerverwaltung eines
Unternehmens. Deine Aufgabe ist es, verschiedene Schleifen und
Funktionen zu verwenden, um die Lagerdaten zu verarbeiten.
## Eingabe der Lagerdaten
Speichern Sie die Lagerdaten (Listen) in die entsprechenden Variablen.
1. Eine Liste von Produktnamen (`produkte`), z. B.
`['Apfel', 'Banane', 'Orange']`.
2. Die verfügbaren Mengen jedes Produkts (`bestaende`), z. B.
`[100, 150, 5]`.
3. Die Verkaufspreise der Produkte (`preise`), z. B.
`[0.5, 0.6, 0.75]`.
### Lösung
%% Cell type:code id:0006-4ad91df9601b62cf5bf448100eee9bebdf1042ab49fdc4122134c40d78a tags:
```
produkte = ['Apfel', 'Banane', 'Orange']
bestaende = [100, 150, 5]
preise = [0.5, 0.6, 0.75]
```
%% Cell type:markdown id:0011-1de971329970231ed0bbe0f855dabb5fd7992440141cfafa5c3ddff4a58 tags:
## Lagerdaten tabellarisch ausgeben
Verwende eine `for`-Schleife mit `zip`, um die Produkte, ihre Bestände
und Preise tabellarisch auszugeben. Beispielausgabe:
``` output
Produkt | Bestand | Preis
--------+---------+------
Apfel | 100 | 0.50
Banane | 150 | 0.60
Orange | 5 | 0.75
```
### Lösung
Schleife zur Ausgabe der Produkte und Bestände und Preise:
%% Cell type:code id:0012-87ceb60f5518aa2d28683d7367e147bc46adc1d9f8845511bfa7a22ce54 tags:
```
table = '''Lagerdaten:
Produkt | Bestand | Preis
--------+---------+------'''
for produkt, bestand, preis in zip(produkte, bestaende, preise):
table += f"\n{produkt:8}|{bestand:>8} |{preis:>6.2f}"
print(table)
```
%% Output
Lagerdaten:
Produkt | Bestand | Preis
--------+---------+------
Apfel | 100 | 0.50
Banane | 150 | 0.60
Orange | 5 | 0.75
%% Cell type:markdown id:0017-d6d31bab0d564205d00c931eeb15ba461714024b6541d00664f39402121 tags:
## Lagercheck
Durchlaufe die Produktbestände und gib die Meldung
`"Niedriger Bestand des Produkts {produkt} ({bestand})"` aus, falls der
Bestand eines Produkts unter 10 liegt.
Berechne den Gesamtwert des Lagerbestands und gib ihn aus.
### Lösung
Das lässt sich beides in einer Schleife kombinieren:
%% Cell type:code id:0018-72bd3f3e64db39a459e2c2136fd9eee4e5c2d18645c1d5df2a24215396a tags:
```
gesamtwert = 0
for produkt, bestand, preis in zip(produkte, bestaende, preise):
if bestand < 10:
print(f"Niedriger Bestand des Produkts {produkt} ({bestand})")
gesamtwert += bestand * preis
```
%% Output
Niedriger Bestand des Produkts Orange (5)
%% Cell type:code id:0019-cdd3465449b7c10cfa109447c8afc7da09ea40253877488f8736ac2a555 tags:
```
print(f"Gesamtwert des Lagerbestands: {gesamtwert:.2f}")
```
%% Output
Gesamtwert des Lagerbestands: 143.75
%% Cell type:markdown id:0023-0a2929b08ee0b637b1512ad11547f6e54692aa1ffb40585b3c0dfc8950e tags:
## Datenbank sortiert ausgeben
Verwende die `sorted`-Funktion um den Aufruf von `zip` herum, um die
Datenbank sortiert in aufsteigender Reihenfolge auszugeben. Um nach
Beständen zu sortieren, sollte `bestaende` das erste Argument von `zip`
sein. Probiere auch das Argument `reverse=True` der `sorted`-Funktion
und als Alternative die `reversed`-Funktion aus, um die Reihenfolge
umzudrehen.
### Lösung
Die Funktion `sorted` sortiert standardmäßig nach dem ersten Element,
das wir in `zip` angeben. Falls Sie das anpassen wollen, probieren Sie
z. B. `key=lambda t: t[2]`, was nach Element 2, also `preise` sortiert
(0: `bestaende`, 1: `produkte`, 2: `preise`). Für absteigende
Reihenfolge, probieren Sie `reverse=True` oder
`reversed(sorted(zip(bestaende, produkte, preise)))`.
%% Cell type:code id:0024-87184d826bd4664933378cb60bd24a19defcd8503a5fc9bb0aa1c357537 tags:
```
table = '''Lagerdaten, sortiert:
Produkt | Bestand | Preis
--------+---------+------'''
for bestand, produkt, preis in sorted(zip(bestaende, produkte, preise), reverse=False):
table += f"\n{produkt:8}|{bestand:>8} |{preis:>6.2f}"
print(table)
```
%% Output
Lagerdaten, sortiert:
Produkt | Bestand | Preis
--------+---------+------
Orange | 5 | 0.75
Apfel | 100 | 0.50
Banane | 150 | 0.60
%% Cell type:markdown id:0028-47cd6a048561ba5f823ec8eb4a5f8a9438b110a45dab9f0b4be3c743cd2 tags:
## Produkte verkaufen
Es werden `{'Apfel': 20, 'Orange': 10}` verkauft. Berechnen Sie den
Preis für den Verkauf und ziehen Sie die Artikel aus dem Lager ab.
Achten Sie darauf, dass nur so viel verkauft werden kann, wie es der
Lagerbestand zulässt!
### Lösung
Folgende Produkte sollen verkauft werden:
%% Cell type:code id:0029-c47593011f4326b732829fcde28fe4195ddef8a27e140f4edb695b69b15 tags:
```
verkauf = {'Apfel': 20, 'Orange': 10}
```
%% Cell type:markdown id:0030-cd96fe383ed7a37c56fe228f7c88edc134e6c0006211ba062c4914a515d tags:
Wir wollen den Gesamtpreis berechnen, aber auch ausgeben, wie viel
Produkte wir verkaufen. Falls wir mehr Produkte verkaufen, als im
Bestand sind, geben wir eine Meldung aus und verkaufen davon gar kein
Produkt. Alternativ könnte man auch so viel Produkte verkaufen, wie im
Bestand sind.
%% Cell type:code id:0031-32c8c9290ab8fdc9e667238ad2510343418109722a460731a87255b1206 tags:
```
gesamtpreis = 0
table = '''Verkaufsdetails:
Produkt | Verkaufsmenge | Gesamtpreis
--------+---------------+------------'''
for produkt in verkauf:
index = produkte.index(produkt)
menge = verkauf[produkt]
verfuegbarer_bestand = bestaende[index]
if menge <= verfuegbarer_bestand:
preis = menge * preise[index]
gesamtpreis += preis
bestaende[index] -= menge
table += f"\n{produkt:8}|{menge:>14} |{preis:>12}"
else:
table += f"\n{produkt:8}|{menge:>14} | Verkauf nicht möglich (unzureichender Bestand: {verfuegbarer_bestand})"
print(table)
```
%% Output
Verkaufsdetails:
Produkt | Verkaufsmenge | Gesamtpreis
--------+---------------+------------
Apfel | 20 | 10.0
Orange | 10 | Verkauf nicht möglich (unzureichender Bestand: 5)
%% Cell type:markdown id:0032-4e247770d01f39cafc9d5e4046cb500c8a233bcf3d1cd11014679e06823 tags:
Der Gesamtpreis beträgt hier:
%% Cell type:code id:0033-58b7c4ee6fad642478d0b0155dedb1219ace71e4f100f24bbc387a627d6 tags:
```
gesamtpreis
```
%% Output
10.0
%% Cell type:markdown id:0034-0259aaba8dffbefa991d489a8a2ed13c09dfde954f08c54791c4960ad8f tags:
Wir geben noch den aktuellen Lagerbestand aus, um zu überprüfen, dass er
entsprechend den Verkäufen geschrumpft ist.
%% Cell type:code id:0035-fb5a4367f91d0d2746f1b304a957c029404a0039ef99c129a3655bbb267 tags:
```
table = '''Aktualisierte Lagerbestände:
Produkt | Bestand
--------+--------'''
for produkt, bestand in zip(produkte, bestaende):
table += f"\n{produkt:8}|{bestand:>8}"
print(table)
```
%% Output
Aktualisierte Lagerbestände:
Produkt | Bestand
--------+--------
Apfel | 80
Banane | 150
Orange | 5
%% Cell type:markdown id:0015-56cae45144d4711cfb1501fb7db54aa8632854bdd11502e3fbb1f06ea4c tags:
# Lagerverwaltung
Du arbeitest an einer Software für die Lagerverwaltung eines
Unternehmens. Deine Aufgabe ist es, verschiedene Schleifen und
Funktionen zu verwenden, um die Lagerdaten zu verarbeiten.
## Eingabe der Lagerdaten
Speichern Sie die Lagerdaten (Listen) in die entsprechenden Variablen.
1. Eine Liste von Produktnamen (`produkte`), z. B.
`['Apfel', 'Banane', 'Orange']`.
2. Die verfügbaren Mengen jedes Produkts (`bestaende`), z. B.
`[100, 150, 5]`.
3. Die Verkaufspreise der Produkte (`preise`), z. B.
`[0.5, 0.6, 0.75]`.
## Lagerdaten tabellarisch ausgeben
Verwende eine `for`-Schleife mit `zip`, um die Produkte, ihre Bestände
und Preise tabellarisch auszugeben. Beispielausgabe:
``` output
Produkt | Bestand | Preis
--------+---------+------
Apfel | 100 | 0.50
Banane | 150 | 0.60
Orange | 5 | 0.75
```
## Lagercheck
Durchlaufe die Produktbestände und gib die Meldung
`"Niedriger Bestand des Produkts {produkt} ({bestand})"` aus, falls der
Bestand eines Produkts unter 10 liegt.
Berechne den Gesamtwert des Lagerbestands und gib ihn aus.
## Datenbank sortiert ausgeben
Verwende die `sorted`-Funktion um den Aufruf von `zip` herum, um die
Datenbank sortiert in aufsteigender Reihenfolge auszugeben. Um nach
Beständen zu sortieren, sollte `bestaende` das erste Argument von `zip`
sein. Probiere auch das Argument `reverse=True` der `sorted`-Funktion
und als Alternative die `reversed`-Funktion aus, um die Reihenfolge
umzudrehen.
## Produkte verkaufen
Es werden `{'Apfel': 20, 'Orange': 10}` verkauft. Berechnen Sie den
Preis für den Verkauf und ziehen Sie die Artikel aus dem Lager ab.
Achten Sie darauf, dass nur so viel verkauft werden kann, wie es der
Lagerbestand zulässt!
Hier Ihr Code:
%% Cell type:code id:0016-44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 tags:
```
```
File moved
File moved
File moved
File moved
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment