Berechnung aus Datum und Userinput

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
SF_3444
User
Beiträge: 1
Registriert: Samstag 11. Mai 2019, 17:19

Hallo,

ich bin totaler Anfänger und komm nicht weiter.

Könnt ihr mir helfen?

Ich möchte aus einem userinput ein Datum in dem Format dd.mm.yyyy erhalten und dann das aktuelle Geburtsdatum daraus berechnen.
Was ich bisher habe. Ich muss die Eingabe dann als Datumstyp festlegen aber daran scheitere ich. Wenn ich den typ der Eingabe bestimmte steht bei class immer "non type".

Den User Input würde ich so abfragen:

userIn = print(input("Bitte geben Sie Ihr Geburtstdatum im Format dd.mm.yy ein:"))

Das aktuelle Datum würde ich so bestimmen:

import datetime
today = datetime.date.today().strftime("%d.%m.%Y")

und dann würde ich gerne das Alter so berechnen:

Alter = userIn-today


Könnt ihr mir helfen, wie ich beim Input den Datentyp Datum erhalte damit ich damit weiterrechnen kann?

Vielen Dank.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

In Python werden Variablen komplett_klein_mit_unterstrich geschrieben. `userIn` ist kein aussagekräftiger Bezeichner. `geburtsdatum` wäre treffender.

So wie du `today` formatierst, kommt da am Ende auch nur wieder ein String als Datumsformat heraus den Python nicht berechnen kann.

Du kannst allerdings beide datetime-Objekte von einander subtrahieren:

Code: Alles auswählen

from datetime import datetime

date_of_birth = datetime.strptime(
    input("Geben Sie Ihr Geburtsdatum im Format <dd:mm:yyyy> ein: "), "%d.%m.%Y"
)
print("Alter: ", int((datetime.today() - date_of_birth).days / 365))
When we say computer, we mean the electronic computer.
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@SF_3444: weißt Du was der Rückgabewert von ›print‹ ist?

@sls: bei Deiner Berechnung ist das Alter um den Tag des Geburtstags herum ziemlich ungenau.
Antworten