2017-01-10 4 views
-2

Ich habe dieses Programm geschrieben, um die Anzahl der Tage, die Sie gelebt haben, zu berechnen, wenn Sie das aktuelle Datum und Ihr Geburtsdatum als die Eingaben verwenden (egal welche zuerst so lang wie im Format: y, m, d. Dies ist) mein erster Code überhaupt, so ist es schlecht strukturiert sein könnte, aber ich versuche zu verstehen, warum es keine gibt?Warum gibt dieser Python-Code immer noch keine zurück?

def past_presenter(year1,month1,day1,year2,month2,day2): 
    if year1>year2: 
    year1,month1,day1,year2,month2,day2 = year2,month2,day2,year1,month1,day1 
    return year1,month1,day1,year2,month2,day2 
    else: 
    if month1>month2: 
     year1,month1,day1,year2,month2,day2 = year2,month2,day2,year1,month1,day1 
     return year1,month1,day1,year2,month2,day2 
    else: 
     if day1>day2: 
     year1,month1,day1,year2,month2,day2 = year2,month2,day2,year1,month1,day1 
     return year1,month1,day1,year2,month2,day2 

def absolute(y,m,d): 
    if y<0: 
    y=y*-1 
    if m<0: 
    m=m*-1 
    if d<0: 
    d=d*-1 
    return y,m,d 

def days(year1,month1,day1,year2,month2,day2): 
    y=year2-year1 
    m=month2-month1 
    d=day2-day1 
    y,m,d = absolute(y,m,d) 
    days=d+(m*30)+(y*30*12) 
    return days 


def daysBetweenDates(year1,month1,day1,year2,month2,day2): 
    year1,month1,day1,year2,month2,day2 = past_presenter(year1,month1,day1,year2,month2,day2) 
    dd = days(year1,month1,day1,year2,month2,day2) 
    return dd 


print daysBetweenDates(2017,2,10,1980,1,1) 
+1

uuuuund was Schalttage? Führen Sie keine eigenen Datumsberechnungen durch. Verwenden Sie einfach "datetime". https://docs.python.org/3.6/library/datetime.html –

+3

Nicht zu erwähnen, dass nicht jeder Monat 30 Tage hat ..... –

+0

@JackManey Ich schrieb diesen Code als Praxis. Mein Problem ist, dass ich keine Ausgabe bekomme. auch wenn ich die Funktion 'Tage (1880,12,30,1990,1,1)' noch nicht funktioniert – KOOLz

Antwort

1

Wenn ich Ihren Code kopieren und einfügen und führen sie es mir 13359 von Ihrem Testfall zurückgegeben. Allerdings Ich sehe Ihren Fehler Testfälle, in denen year1 < year2 None zurückgibt, da past_presenter None zurückgibt, fehlt eine Return-Anweisung am Ende aller if-Anweisungen Alle Return-Anweisungen sind in "if year1> year2" verschachtelt es gibt nichts zurück, wenn year2> = year1.

Verwandte Themen