Schwierigkeiten mit einer Aufgabe

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
saltyelo
User
Beiträge: 7
Registriert: Sonntag 16. Januar 2022, 21:42

Hey Leute,

ich bin jetzt ein relativer Neuling, was Programmieren betrifft und habe mir deswegen ein Buch heruntergeladen und die Aufgaben nach und nach durchgearbeitet, damit ich mit Python besser umgehen kann.

(https://link.springer.com/book/10.1007/ ... 58-26496-3) - mit diesem Buch arbeite ich zurzeit.

Es geht um folgende Übung: (Seite 28-29)

Schreiben Sie ein Programm 𝑍𝑎𝑒ℎ𝑙𝑚𝑎𝑠𝑠, das eine gegebene Anzahl von Einzelstücken in Gros, Schock und Dutzend umrechnet. Hierzu sind die folgenden Umrechnungsmaße gegeben:
1 Dutzend = 12 Stück
1 Schock = 5 Dutzend
1 Gros = 12 Dutzend

Hinweis: Versenden Sie den Modulo % Operator für den Rest bei der ganzzahligen Division sowie die ganzzahlige Division zur Berechnung der einzelnen Werte.

Testbeispiel:

𝑛=370 : --> Gros = 2, Schock = 1, Dutzend = 1, Stück = 10
𝑛=473 : --> Gros = 3, Schock = 0, Dutzend = 3, Stück = 5

Ich saß da jetzt schon eine Weile dran und hab schon viele andere Übungen erfolgreich machen können, aber bei dieser Aufgabe scheine ich wirklich Probleme zu haben.
Kann mir jemand helfen bzw. zeigen, wie er/sie das Problem lösen würde?

Vielen Dank im Voraus!

Liebe Grüße

SaltyElo
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@saltyelo,

zunächst sollte man sich überlegen wieviel Stück in jeder Einheit enthalten sind. Dann schaut man mit der Ganzzahl-Division beginnend mit der größten, wie viele man von einer Einheit braucht.
Die Modulo Division sagt einem wie groß der Rest ist.
Den Rest teilt man durch die nächst kleinere Einheit, usw.:

Hier mal zeilenweise mit Kommentaren runtergeschrieben:

Code: Alles auswählen

# zunächst Stückzahlen für jede Einheit bestimmten
GROS = 144
SCHOCK = 60
DUTZEND = 12

n = 370

# Anzahl der Gros ist die Ganzzahl Division von n durch die Stückzahl eines Gros:
anzahl_gros = n // GROS

# der Rest ist die Modulo Division von n durch die Stückzahl eines Gros:
rest = n % GROS

# Anzahl der Schock ist die Ganzzahl Division vom Rest durch die Stückzahl eines Schock:
anzahl_schock = rest // SCHOCK

# Davon der Rest ist die Modulo Division vom vorherigen Rest durch die Stückzahl eines Schock:
rest = rest % SCHOCK

# Anzahl der Dutzend ist die Ganzzahl Division vom vorherigen Rest durch die Stückzahl eines Dutzend:
anzahl_dutzend = rest // DUTZEND

# Davon der Rest (also die Stueck) ist die Modulo Division vom vorherigen Rest durch die Stückzahl eines Dutzend:
anzahl_stueck = rest % DUTZEND

print(f"n={n} : --> Gros = {anzahl_gros}, Schock = {anzahl_schock}, Dutzend = {anzahl_dutzend}, Stück = {anzahl_stueck}")

"""
n=370 : --> Gros = 2, Schock = 1, Dutzend = 1, Stück = 10
"""
saltyelo
User
Beiträge: 7
Registriert: Sonntag 16. Januar 2022, 21:42

rogerb hat geschrieben: Sonntag 16. Januar 2022, 23:18 @saltyelo,

zunächst sollte man sich überlegen wieviel Stück in jeder Einheit enthalten sind. Dann schaut man mit der Ganzzahl-Division beginnend mit der größten, wie viele man von einer Einheit braucht.
Die Modulo Division sagt einem wie groß der Rest ist.
Den Rest teilt man durch die nächst kleinere Einheit, usw.:

Hier mal zeilenweise mit Kommentaren runtergeschrieben:

Code: Alles auswählen

# zunächst Stückzahlen für jede Einheit bestimmten
GROS = 144
SCHOCK = 60
DUTZEND = 12

n = 370

# Anzahl der Gros ist die Ganzzahl Division von n durch die Stückzahl eines Gros:
anzahl_gros = n // GROS

# der Rest ist die Modulo Division von n durch die Stückzahl eines Gros:
rest = n % GROS

# Anzahl der Schock ist die Ganzzahl Division vom Rest durch die Stückzahl eines Schock:
anzahl_schock = rest // SCHOCK

# Davon der Rest ist die Modulo Division vom vorherigen Rest durch die Stückzahl eines Schock:
rest = rest % SCHOCK

# Anzahl der Dutzend ist die Ganzzahl Division vom vorherigen Rest durch die Stückzahl eines Dutzend:
anzahl_dutzend = rest // DUTZEND

# Davon der Rest (also die Stueck) ist die Modulo Division vom vorherigen Rest durch die Stückzahl eines Dutzend:
anzahl_stueck = rest % DUTZEND

print(f"n={n} : --> Gros = {anzahl_gros}, Schock = {anzahl_schock}, Dutzend = {anzahl_dutzend}, Stück = {anzahl_stueck}")

"""
n=370 : --> Gros = 2, Schock = 1, Dutzend = 1, Stück = 10
"""

Vielen lieben Dank für diese ausführliche Antwort, das hat mir sehr weitergeholfen. Wenn mal so ein Skript endlich funktioniert, dann macht das auch mal wieder endlich Spaß! :D
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

An der Stelle der Hinweis das es die `divmod()`-Funktion gibt, falls das im Buch da nicht irgendwo in der Nähe stehen sollte.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ganze mit `divmod` und näher an der ursprünglichen Definition:

Code: Alles auswählen

DUTZEND = 12 # Stück
SCHOCK = 5 # Dutzend
GROS = 12 # Dutzend

n = 370
anzahl_dutzend, anzahl_stueck = divmod(n, DUTZEND)
anzahl_gros, anzahl_dutzend = divmod(anzahl_dutzend, GROS)
anzahl_schock, anzahl_dutzend = divmod(anzahl_dutzend, SCHOCK)
print(f"n={n} : --> Gros = {anzahl_gros}, Schock = {anzahl_schock}, Dutzend = {anzahl_dutzend}, Stück = {anzahl_stueck}")
Antworten