2017-01-10 10 views
-2

私はこのプログラムを書いて、現在の日付と生年月日を入力として使用したときのあなたの生存日数を計算します(どの形式のものであっても、その形式はy、m、dです)。それは悪い構造化されるかもしれないので、私の最初のコードは、これまで、しかし、私はそれが何も返さない理由を参照しようとしている?なぜこのpythonコードは何も返さないのですか?

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

Aaaaand何何を出力していませんか?自分の日付計算をロールバックしないでください。ちょうど 'datetime'を使用してください。 https://docs.python.org/3.6/library/datetime.html –

+3

毎月30日ではありません..... –

+0

@JackManey私はこのコードを練習として書きました。私の問題は、出力として何も得られないということです。 'days(1880,12,30,1990,1,1)'関数を呼び出すときでさえ、まだ動作しません。 – KOOLz

答えて

1

私はあなたのコードを貼り付け、私はあなたのテストケースによって返された13359を取得し、それを実行してコピーする。しかし、あなたの間違いが表示されます。year1 < year2の場合、past_presenterがNoneを返すため、Noneが返されます。すべてのifステートメントの最後にreturnステートメントがありません。すべてのreturnステートメントは "if year1> year2"内にネストされます。 year2> = year1のときは何も返しません。

0

コードで結構ですので、問題は、解決されたが、それは上でテストされていたプラットフォーム:「https://repl.it/languages/pythonはいつもうるう日に関するどんなコード

関連する問題