Python Programm Erklärung?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Wenn ich das richtig verstehe, dann wäre das doch die Lösung:

datum = input("Gebe das Datum ein:")
datumTeile = datum.split('.')


day = int(datumTeile[0])
month = int(datumTeile[1])
year = int(datumTeile[2])


result = day * month * year


print(result)

Zu erst splitten wir bei . um die Zahlen zu bekommen.

Dann wandeln wir die Zahlen, welche noch ein String sind, in Integer um.

Durch die Wandlung in Integer wird die 0 automatisch entfernt, da Integer nur 1, aber kein 01 kennt.

Dann multiplizieren, wie du es wolltest und ausgeben.

Da ist keine einzige if-Abfrage, wo sollte denn auch eine sein? Oder verstehe ich das Problem noch nicht so ganz?

Hier nochmal vom Code ein Live Beispiel:

Bild zum Beitrag

 - (Computer, programmieren, Informatik)

Meinst du Ziffern statt Zahlen? Denn bei „Zahlen des Geburtsdatums“ hätte ich eher an 10, 10 und 1910 gedacht statt an 1, 0, 1, 0, 1, 9, 1, 0. Wobei ich letzteres vermute, da du von „Nullen [...] rausgefiltert“ schreibst, also 1 * 1 * 1 * 9 * 1 dann bei deinem Beispiel. (Oder meinst du dann vielleicht 1 * 1 * 191? Oder wie meinst du das? Führe das evtl. mal manuell an deinem Beispiel und/oder an weiteren Beispiel vor.)

Ich würde zunächst einmal überprüfen, ob es überhaupt ein Geburtsdatum in passender Form ist. Und dann einfach alle Ziffern (außer 0) daraus betrachten und aufmultiplizieren.

Also so beispielsweise:

from datetime import datetime
from math import prod

def datum_korrekt(date_str):
    try:
        datetime.strptime(date_str, "%d.%m.%Y")
        return(True)
    except ValueError:
        return(False)
    
geburtsdatum = input("Geburtsdatum im Format DD.MM.YYYY eingeben: ")
if datum_korrekt(geburtsdatum):
    ziffern_ohne_0 = [int(c) for c in geburtsdatum if c in "123456789"]
    produkt = prod(ziffern_ohne_0)
    print(f"Das Produkt der Ziffern (ohne 0): {produkt}")
else:
    print("Das ist kein gültiges Datum im geforderten Format gewesen.")

Also dein Beispiel 10.10.1910 soll dann zur Aufgabe 1*1*1*9*1 werden und als Ergebnis 9 ausspucken?

# Datum abfragen
datum = input("Bitte das Datum eingeben: ")

# Variablen erstellen
ergebnis = 1
aufgabe = ""

# Jedes Zeichen durchgehen und berechnen
for zeichen in datum:
    if zeichen >= "1" and zeichen <= "9":
        ergebnis *= int(zeichen)
        aufgabe += "*" + zeichen

# Ergebnis ausgeben
print(f"{aufgabe[1:]} = {ergebnis}")
x//10 if x%10==0 else x

würde alle Vielfachen von 10 durch 10 teilen

Ich bin mir jetzt auch nicht sicher was gemeint ist.

Wenn bei dem String alle Nullen entfernt werden sollen, dann ist es einfacher mit .replace("0", "")